Help - Wininet + Proxy

elademri Messages postés 18 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 15 avril 2009 - 9 sept. 2006 à 21:45
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008 - 10 sept. 2006 à 02:22
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

24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
9 sept. 2006 à 23:56
Questions à poser dans le forum, pas dans les sources ...
0
elademri Messages postés 18 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 15 avril 2009
10 sept. 2006 à 00:29
Vous êtes ici :
Thèmes / C++ & C++ .NET / Windows / Réseau & Internet / Help - Wininet + Proxy

C'est pas le forum ?!
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
10 sept. 2006 à 02:22
oulà excuse moi :D
j'commence à fatiguer un peu

encore désolé

++
0
Rejoignez-nous