HTTP Web Request Header ignorieren
-
Hallo zusammen,
ich bin gerade dabei ein Program zu entwickeln, welches den HTML-Quelltext einer Webseite auslesen soll und anschließend nach bestimmten Wörtern sucht und diese in eine TextBox schreibt. Das suchen etc. funktioniert ohne Probleme. Mein Problem ist ich bekomme folgende Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.Net.WebException" ist in System.dll aufgetreten.
Zusätzliche Informationen: Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseHeader Detail=Headername ist ungültig
Auf dem Webserver kann ich nichts verändern.
Auf anderen Seiten habe ich gelesen, dass man die app.config anpassen muss. Hat aber auch keinen Wert gehabt.
String ^Response_ = ""; HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create(URL)); request->Method = "GET"; request->PreAuthenticate=true; String^ UserName = "User"; String^ Password = "Passwort"; NetworkCredential^ networkCredential = gcnew NetworkCredential(UserName,Password); request->Credentials = networkCredential; HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->GetResponse()); Stream^ receiveStream = response->GetResponseStream(); StreamReader^ readStream = gcnew StreamReader( receiveStream,Encoding::UTF8 ); txbQuelltext_TEST->Text = readStream->ReadToEnd(); //.... Code zum durchsuchen etc.
Kann mir jemand helfen?
Viele Grüße
-
Hallo
Zwar hätte man es auch einfach ergoggle können, aber hier die Lösung:
<?xml version=”1.0″ encoding=”utf-8″ ?> <configuration> <system.net> <settings> <httpWebRequest useUnsafeHeaderParsing="true" /> </settings> </system.net> </configuration>
Und zum anderen, du bist hier im MFC Forum, das was du programmierst ist C++/CLI.
MfG Marco
-
Wie ich oben schon geschrieben habe die app.config habe ich angepasst:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing = "true"/>
</settings>
</system.net>
</configuration>
-
Hallo
Hmm Okay hab ich mich verlesen, entschuldigung.
Aber wenn es nicht mit der Einstellung geht und du den Server nicht umkonfigurieren kannst, damit er die Informationen richtig sendet, dann kannst du den Fehler wohl nur per try/catch schlucken und ignorieren.
Wenn du per Webbrowser drauf kommst, kannst ja auch mal einen wireshark anschmeisen und schauen, ob an deinen Paketen zu den Browser-Pakete unterschiede auftretten und diese bei dir nachbauen.
Mfg marco
-
mit try catch hab ichs auch schon versucht..
das problem dabei ist, dass dann keine antwort zurück gegeben wird und somit ein null exception aufgerufen wird..
-
Den einzigen unterschied zwischen den beiden Anfragen ist der Header.
Bei der Anfrage über den Browser wird ein Header gesendet bei der über die Software nicht..Gibt es keine Möglichkeit meinem Programm zu sagen ignoriere den Header?
Grüßle
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die einzige möglichkeit die ich kenne ist über die Konfig, nur mal nebenbei, die sache mit der Config, hast du im Debugger getestet? und wenn ja, lag deine Einstellung dann auch in der program.vshost.exe.config ab? Bzw probiere es mal ohne Debugger, sondern direkt starten ob die Exception dann auch fliegt.
Weil im Debugger zählt nur die Config aus der vshost.exe.
Wenn du du die Einstellung ins Projekt als app.config mit eingepflegt hast, dann kopiert VS es automatisch in diese vshost.exe.config mit um.
Sollte alles nicht helfen, hast du mal probiert, deine Anfrage so zu clonen, das ssie ausschaut, wie die deines Browsers und dann überprüft ob der header immer noch nicht mit kommt.
Mfg marco
PS: wo genau fliegt denn die Exception?