wininet fehler abfangen
-
Hi,
Ich versuche eine Verbindung durch einen Proxyserver mittels InternetOpen() aufzubauen.
string GetSource(string url, string proxy, string port) { string output; HINTERNET hInternet; HINTERNET hFile; char szBuf[1024]; bool bGO = true; DWORD ReadSize; if(proxy == "") { hInternet = InternetOpen("WININET Sample Program", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); } else { try { hInternet = InternetOpen("WININET Sample Program", INTERNET_OPEN_TYPE_PROXY, proxy.c_str(), port.c_str(), 0); } catch(...) { cout<<"Proxyfehler..."<<endl; } } ...Jedes mal wenn InternetOpen fehlschlägt, stürzt das Programm trotz try-catch ab. Kann mir jemand sagen, wie ich den Fehler abfangen kann, ohne dass das ganze Programm abschmiert ?
Danke

Wiesel
-
so sieht übrigends der Aufruf der Funktion aus:
GetSource("http://www.google.de","123.4.567.890:1234","<local>");
-
Das ist mal eine Lustige Proxy-Adresse...
-
PS: Ein catch-All ist ab VS2008 nur noch für C++-Exceptions aktiv...
Vermutlich tritt bei Dir irgendeine Access-Violation uf (warum auch immer)... die wird mit chatch(...) nicht gefangen...
-
ja, die ist wirklich lustig.
Normalerweise sollte InternetOpen() bei dieser Proxyadresse laut MSDN NULL liefern, aber das einzigste was ich bekomme ist der Absturz des Programms.Ich verwende Dev-c++ und ja, ich weiß, dass es nicht das gelbe vom Ei sein soll.

if(!hInternet) { cout<< GetLastError; }funktionier auch nicht, weil er garnicht erst in bis zur if-anweisung kommt und vorher in der InternetOpen()-funktion versagt.
Eine Lösung wäre evtl., falls man den Fehler nicht irgendwie abfangen kann, vorher zu überprüfen, ob der Proxy-server funktioniert. Falls ja, kann er verwendet werden. Falls nein, wird er nicht verwendet und es gibt keinen Fehler.
Jetzt stelle ich mir aber die Frage, wie ich das testen kann, ohne InternetOpen() zu verwenden.