Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...