Help - Wininet + Proxy

Signaler
Messages postés
18
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
15 avril 2009
-
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008
-
Bonjour à tous,
J'utilise une fonction download (code plus bas), qui a pour but de telecharger un fichier, et ce en passant par un proxy HTTP.
Dans la msdn, on trouve que pour passer par un proxy avec les fontions wininet, il suffit d'adapter quelques paramètres d' InternetOpen.
J'ai pourtant plusieurs questions :
1) comment savoir si la connection par le proxy a fonctionné ? en effet, je me retrouve souvent avec des fichiers telecharges de 0-2ko au lieu des 30 attendus (cible jpg) ... j'utilise donc un critère rustique (parametre size dans le code) du style si donnees_telechargees<10ko alors mauvais proxy... La NULLité des handles HINTERNET ne semble pas déterminante.
2) doit on toujours simplement passer le Host Name & Object Name à InternetConnect et HttpOpenRequest, ou y-a-t-il une quelconque concaténation à faire avec l'adresse du proxy ?
3) mes interrogations viennent du fait que ce code a peu ou pas marché, mais peut etre n'est ce du qu'au faible nombre de proxy qui fonctionnent... (nb : le code fonctionne parfaitement sans l'utilisation d'un proxy). Dans ce cas la réponse au 1) m'intéresse plus particulièrement.

void download(LPCTSTR lpszServerName,LPCTSTR lpszObjectName, PTSTR File,LPCTSTR lpszProxyName, long int*size)
{
     HINTERNET hRoot = InternetOpen("mwahahaha",INTERNET_OPEN_TYPE_PROXY,lpszProxyName,NULL,0);
     HINTERNET hConnect = InternetConnect(hRoot,lpszServerName,INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,
                                          INTERNET_SERVICE_HTTP,0,0);
     HINTERNET hRequest = HttpOpenRequest(hConnect,"GET",lpszObjectName,NULL,NULL,NULL,
                                          INTERNET_FLAG_KEEP_CONNECTION,0);
     if (hRequest==NULL) return;
     HttpSendRequest(hRequest,NULL,NULL,NULL,0);
    
     LPTSTR  lpszData;
     DWORD  dwSize;
     DWORD  dwDownloaded;
     DWORD dwBytesWritten;
     HANDLE hFile = CreateFile(File,GENERIC_WRITE, 0,NULL, CREATE_ALWAYS, 0, NULL);
    
     *size=0;
     do
     {
        InternetQueryDataAvailable(hRequest,&dwSize,0,0);
        lpszData = new TCHAR[dwSize+1];


        InternetReadFile(hRequest,(LPVOID)lpszData,dwSize,&dwDownloaded);
        lpszData[dwDownloaded]='\0';
        (*size)+=dwDownloaded;


        WriteFile(hFile, lpszData, dwDownloaded* sizeof(TCHAR),&dwBytesWritten, NULL) ;
        delete[] lpszData;


        if (dwDownloaded == 0) break;
     }while(TRUE);
     CloseHandle (hFile) ;
         
     InternetCloseHandle(hRequest);
     InternetCloseHandle(hConnect);
     InternetCloseHandle(hRoot);
}

3 réponses

Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

Questions à poser dans le forum, pas dans les sources ...
Messages postés
18
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
15 avril 2009

Vous êtes ici :
Thèmes / C++ & C++ .NET / Windows / Réseau & Internet / Help - Wininet + Proxy

C'est pas le forum ?!
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

oulà excuse moi :D
j'commence à fatiguer un peu

encore désolé

++