Gestion d'erreurs WinINet

cs_Gab23 Messages postés 2 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 8 décembre 2007 - 22 juil. 2006 à 18:19
 Utilisateur anonyme - 22 juil. 2006 à 19:05
Bonjour,

Je débute en C++ et en programmation API. J'ai un petit soucis avec la librarie WinINet. Voilà, j'ai un programme qui se connecte à l'internet et qui peut charger des fichiers. Pas de problème jusque là, ça fonctionne bien. Seulement, j'aimerais que ce programme puisse gérer les erreurs (pas de connexion internet, fichier inexistant, etc.).

Voici une partie du code :

HINTERNET hINet, hConnection, hRequest;
    CHAR buffer[2048];
    DWORD dwRead;

    hINet = InternetOpen("WindowsApp", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

    if(hINet == NULL){ MessageBox(hwnd,"erreur","Erreur!",MB_OK | MB_ICONERROR); exit; }

    hConnection = InternetConnect(hINet, "www.siteweb.com", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0 );

    if(hConnection == NULL){ MessageBox(hwnd,"erreur","Erreur!",MB_OK | MB_ICONINFORMATION); exit; }

    hRequest = HttpOpenRequest( hConnection, "GET", "index.php", NULL, NULL, NULL, INTERNET_FLAG_RELOAD, 0  );

    if(hRequest == NULL){ MessageBox(hwnd,"erreur","Erreur!",MB_OK | MB_ICONINFORMATION); exit; }

    HttpSendRequest( hRequest, NULL, 0, NULL, 0);

        if(InternetReadFile( hRequest, buffer, 255, &dwRead ) )
        {

            MessageBox(hwnd,buffer,"Internet",MB_OK | MB_ICONINFORMATION);

        }

    InternetCloseHandle(hwnd);

J'ai fermé ma connexion internet simplement pour voir comment le programme réagirait et j'ai remarqué que la ligne MessageBox(hwnd,buffer,"Internet",MB_OK | MB_ICONINFORMATION); s'exécute malgré tout et m'affiche quelques caractères spéciaux. Rien avoir avec la valeur attendue.

2 réponses

Utilisateur anonyme
22 juil. 2006 à 19:02
Salut
Il y a une fonction qui retourne un numero d'erreur et aprés tu le compare avec les differentes erreur de wininet cité ici: http://msdn.microsoft.com/library/en-us/wininet/wininet/wininet_errors.asp?frame=truehttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/wininet_functions.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/wininet_functions.asp

La fonction qui retourne le numero d'erreur je crois ( a 90%) que c'est GetLastError(void);  cette fonction retourne un nombre du type DWORD.

MaLaDeDeDe 97one 
0
Utilisateur anonyme
22 juil. 2006 à 19:05
Dans ton code tu mets GetLastError(); juste aprés chaque fonction de wininet et pas GetLastError(void);
Si je me trompe pas....  :s
MaLaDeDeDe 97one 
0
Rejoignez-nous