Zum Inhalt springen

WinInet und Proxyserver


Empfohlene Beiträge

Hi,

ich habe folgendes Programm, mit dem ich eine Datei von einem Webserver

runterladen möchte. Allerdings gibt es noch ein Problem, ich sitze hier hinter einem

Proxyserver und wenn ich HttpSendRequest() aufrufe, bekomme ich den Fehler das

ich mich erst am Proxy anmelden muß. Wenn ich das dann erledigt habe und

HttpSendRequest() erneut aufrufe, bekomme ich jedesmal einen Timeout.

Wenn ich bei InternetOpen angebe das ich hinter einen Proxy sitze (ohne den

Namen anzugeben), läuft das Programm wenn auf dem PC der Microsoft Proxy Client

installiert ist, ohne das ich mich anmelden muss. Ansonsten kann er die Adresse nicht auflösen.

Wenn ich bei InernetOpen zusätzlich noch den Namen des Proxys angeben, habe ich

das selbe Problem wie wenn ich nichts angebe.

:confused:

Hier habt ihr mal den gesamten Code:


#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <wininet.h>

#pragma comment(lib,"wininet.lib")

main()
{
HINTERNET hInternet;
HINTERNET hConnect;
HINTERNET hRequest;
DWORD dwRead =1;
char c[1000];

hInternet = InternetOpen("Microsoft Internet Explorer",NULL,NULL,NULL,NULL);
if (hInternet == NULL)
{
printf ("fehler1\n");
}
else
{
printf ("ok\n");
hConnect = InternetConnect(hInternet,"xxx.yyy.zzz",INTERNET_DEFAULT_HTTP_PORT,
"","",INTERNET_SERVICE_HTTP,
NULL,NULL);

if (hConnect == NULL)
{
printf ("fehler2\n");
}
else
{

printf ("ok\n");
hRequest = HttpOpenRequest(hConnect,NULL,"test/test2/test.zip",NULL,"",
NULL,NULL,NULL);
if (hRequest == NULL)
{
printf ("fehler3\n");
}
else
{
printf ("ok\n");
ok:
if (!HttpSendRequest(hRequest,NULL,NULL,NULL,NULL))
{
DWORD er,w=1000;
char r[1000];
InternetGetLastResponseInfo(&er,r,&w);
printf ("\n%s -> %i",r,er);
printf ("nicht gesendet->%i",GetLastError());
}
else
{
DWORD dwCode,dwSize=40;
if (HttpQueryInfo(hRequest,HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
&dwCode,&dwSize,NULL))
printf ("query\n");
if (dwCode == HTTP_STATUS_PROXY_AUTH_REQ)
{
printf ("anmelden!\n");
dwRead = 1;
while(dwRead != NULL)
if (!InternetReadFile(hRequest,c,1000,&dwRead))
printf ("\nkann nicht lesen->%i",GetLastError());
if (InternetErrorDlg (GetDesktopWindow(),hRequest, ERROR_INTERNET_INCORRECT_PASSWORD,
FLAGS_ERROR_UI_FILTER_FOR_ERRORS | FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS,NULL) == ERROR_INTERNET_FORCE_RETRY)
{
printf ("neuer versuch\n");
goto ok;
}
else
{
printf ("chanceld\n");
}
}
else
{
printf ("gesendet\n");

FILE* stream = fopen("c:\\update.zip","wb");
if (stream == NULL)
printf ("kann datei nicht erstellen\n");
else
{
dwRead=1;
while(dwRead != NULL)
{
if (InternetReadFile(hRequest,c,1000,&dwRead) == false)
{
printf ("kann nicht lesen->%i",GetLastError());
dwRead = NULL;
}
else
{
fwrite(c,sizeof(char),dwRead,stream);
printf ("schreibe: %i\n",dwRead);
}
}
fclose(stream);
}
}
}
InternetCloseHandle(hRequest);
}
InternetCloseHandle(hConnect);
}
InternetCloseHandle(hInternet);

}
printf ("\nfertig\n");
getch();
return 0;
}
[/PHP]

Das war zwar jetzt alles ein bischen viel, aber ich hoffe das mir trotzdem jemand helfen kann.

Gruß

Guybrush

PS: Das goto bleibt natürlich nur in der Testversion drin;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...