IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

comment ouvrir une connexion https


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    rpsi
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : rpsi

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut comment ouvrir une connexion https
    Bonjour,
    Je ne suis pas sûr de publier sur le bon forum...
    Je ne suis pas familier des connexions HTTPS (environnement mfc/c++ natif)
    Mon sujet est de fabriquer un code pour se connecter à un fournisseur de service pour envoyer un ou plusieurs SMS. (page du fournisseur: https://developers.esendex.com/api-r...sagedispatcher )
    Ce code me renvoi "impossible d'établir une connexion avec le serveur" sur "pFile->SendRequestEx(strData.GetLength());"
    Je ne sais pas trop d'ou peut venir le problème... Le message d'erreur étant très vague... (Impossible d'établir une connexion avec le serveur)
    Pouvez vous m'aider ?

    NB: J'ai aussi essayé avec la version "session authentication" (page du fournisseur https://developers.esendex.com/api-r...authentication ), mais j'ai exactement le même problème sur la requête "POST" sensé demandé le jeton d'authentification...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    CString strData="<messages><accountreference>moncompte</accountreference><message><to>0611223344</to><body>texte du SMS</body></message></messages>";
    CInternetSession session("SMS");
    CHttpConnection *pSession=NULL;
    CHttpFile *pFile=NULL;
    int sockFail=0;
     
     
    try
    {
        pSession=session.GetHttpConnection(192.168.5.5,INTERNET_FLAG_SECURE,80,NULL,NULL);
    }
    catch(CInternetException *pEx)
    {
        TCHAR sz[1024];
        pEx->GetErrorMessage(sz,1024);
            AfxMessageBox(sz,MB_ICONEXCLAMATION|MB_OK|MB_DEFBUTTON1);
        pEx->Delete();
    }
     
     
    if(pSession)
    {
        CString header;
        header="Content-Type: application/xml\r\n";
        header+="<?xml version='1.0' encoding='UTF-8'?>\r\n";
        header+="Authorization: Basic ";
        //{
        //    char szBuffer[1024];
        //    CString strTmp;
        //    strTmp.Format("%s:%s",
        //                  static_cast<LPCTSTR>(theApp.m_strEsendexUser),
        //                  static_cast<LPCTSTR>(theApp.m_strEsendexPassword));
        //    StrToBase64(strTmp,szBuffer);
        //    header+=szBuffer;
        //}
        header+="user + mdp en base 64 (vérifié: le pb ne semble pas être ici)";
        header+="\r\n";
        try
        {
            DWORD dwFlags=INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|INTERNET_FLAG_IGNORE_CERT_CN_INVALID;
            pFile=pSession->OpenRequest(CHttpConnection::HTTP_VERB_POST,"https://api.esendex.com/v1.0/messagedispatcher",/*pstrReferer*/0,/*dwContext*/1,/*ppstrAcceptTypes*/0,"HTTP/1.1",dwFlags);
        }
        catch(CInternetException *pEx)
        {
            TCHAR sz[1024];
            pEx->GetErrorMessage(sz,1024);
            AfxMessageBox(sz,MB_ICONEXCLAMATION|MB_OK|MB_DEFBUTTON1);
            pEx->Delete();
        }
    }
    if(pFile)
    {
        try
        {
            pFile->AddRequestHeaders(header);
        }
        catch(CInternetException *pEx)
        {
            TCHAR sz[1024];
            pEx->GetErrorMessage(sz,1024);
            AfxMessageBox(sz,MB_ICONEXCLAMATION|MB_OK|MB_DEFBUTTON1);
            pEx->Delete();
        }
        try
        {
            pFile->SendRequestEx(strData.GetLength());
            pFile->WriteString(strData);
            pFile->EndRequest();
        }
        catch(CInternetException *pEx)
        {
            TCHAR sz[1024];
            pEx->GetErrorMessage(sz,1024);                    // ici, sz="Impossible d'établir une connexion avec le serveur"
            AfxMessageBox(sz,MB_ICONEXCLAMATION|MB_OK|MB_DEFBUTTON1);
            pEx->Delete();
        }
        CString retHeader;
        pFile->QueryInfo(HTTP_QUERY_STATUS_CODE,retHeader,0);
        if(retHeader!="200")
        {
            sockFail=1;
        }
        else
        {
            CString buff;
            while(pFile->ReadString(buff))
            {
                strResponse+=buff;
                strResponse+="\n";
                buff.Empty();
            }
        }
        pFile->Close();
        delete pFile;
        pSession->Close();
        delete pSession;
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    Un bricolage :
    https://stackoverflow.com/questions/...ing-https-in-c
    Sinon, utilisez une librairie réseau plus récente ne ferait pas de mal.

  3. #3
    Membre averti
    Homme Profil pro
    rpsi
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : rpsi

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut
    Bonjour,
    le code montré ici ressemble beaucoup au mien...
    D'ailleurs, une fois appliquée les quelques différences, j'obtiens le même résultat...
    Quand à la librairie, pourquoi pas. mais laquelle ?
    Et est ce bien nécessaire pour ce qui me semble être quelque chose que devait déjà traiter les MFC...

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    bonjour si tu veux une librairie plus récente, dans mon avant derniere societe, j'ai fait un logiciel avec l'api C++ rest sdk de Microsoft

  5. #5
    Membre averti
    Homme Profil pro
    rpsi
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : rpsi

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Par défaut
    j'ai avancé d'un pas: apparemment, il faut utiliser le port 443 au lieu du 80
    Maintenant, mon message d'erreur est "L'autorité de certification n'est pas valide ou correcte"

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 487
    Par défaut
    j'ai avancé d'un pas: apparemment, il faut utiliser le port 443 au lieu du 80
    Heu, c'était tellement évident que j'avais même pas fait la remarque.
    C'est loin d'être trivial et les MFC n'ont jamais été une "vraie" librairie réseau, et encore moins à même de gérer les certificats souvent nécessaire en https.
    Franchement, faire du réseau avec les MFC, c'est vraiment proche du masochisme.
    https://stackoverflow.com/questions/...etwork-library

    Mais juste pour HTTP/HTTPS, libcurl est plus simple :
    https://stackoverflow.com/questions/...-certificate-a

    Après, si même votre navigateur Web n'arrive pas à s'y connecter, c'est qu'il vous manque pas mal de truc comme des certificats, clés ou autres machins indiqués dans leur documentation, potentiellement.

    Commencez pour vous y connecter avec votre navigateur Web.

Discussions similaires

  1. Comment ouvrir une connexion sur une BD FireBird
    Par colorid dans le forum Bases de données
    Réponses: 15
    Dernier message: 18/02/2014, 18h41
  2. comment ouvrir une page httpS
    Par alain16 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/07/2013, 17h28
  3. Réponses: 0
    Dernier message: 05/10/2009, 16h25
  4. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 11h30
  5. Réponses: 1
    Dernier message: 31/10/2002, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo