Gestion d'erreurs WinINet

Signaler
Messages postés
2
Date d'inscription
mardi 10 août 2004
Statut
Membre
Dernière intervention
8 décembre 2007
-
 Utilisateur anonyme -
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


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 

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