Ich benutze die WebClient
Klasse, um einige Daten in ein Webformular zu posten. Ich möchte den Antwortstatuscode der Formularübermittlung erhalten. Bisher habe ich herausgefunden, wie man den Statuscode erhält, wenn es eine Ausnahme gibt
Catch wex As WebException
If TypeOf wex.Response Is HttpWebResponse Then
msgbox(DirectCast(wex.Response, HttpWebResponse).StatusCode)
End If
Wenn das Formular jedoch erfolgreich gesendet wurde und keine Ausnahme ausgelöst wird, kenne ich den Statuscode (200, 301, 302, ...) nicht.
Gibt es eine Möglichkeit, den Statuscode abzurufen, wenn keine Ausnahmen ausgelöst werden?
PS: Ich bevorzuge es, httpwebrequest / httpwebresponse nicht zu verwenden
Sie können überprüfen, ob der Fehler vom Typ ist,
WebException
und dann den Antwortcode überprüfen.oder
quelle
Es gibt eine Möglichkeit, dies mithilfe von Reflexion zu tun. Es funktioniert mit .NET 4.0. Es greift auf ein privates Feld zu und funktioniert möglicherweise nicht in anderen Versionen von .NET ohne Änderungen.
Ich habe keine Ahnung, warum Microsoft dieses Feld nicht mit einer Eigenschaft verfügbar gemacht hat.
quelle
Wenn Sie .Net 4.0 (oder weniger) verwenden:
Wenn Sie .Net 4.5.X oder höher verwenden, wechseln Sie zu HttpClient :
quelle
Eriks Antwort funktioniert unter Windows Phone nicht so wie sie ist. Folgendes tut:
Zumindest bei der Verwendung
OpenReadAsync
; Für anderexxxAsync
Methoden wird eine sorgfältige Prüfung dringend empfohlen. Das Framework ruft GetWebResponse irgendwo entlang des Codepfads auf. Alles, was Sie tun müssen, ist das Antwortobjekt zu erfassen und zwischenzuspeichern.Der Fallback-Code in diesem Snippet ist 200, da echte HTTP-Fehler - 500, 404 usw. - ohnehin als Ausnahmen gemeldet werden. Der Zweck dieses Tricks besteht darin, fehlerfreie Codes zu erfassen, in meinem speziellen Fall 304 (nicht geändert). Der Fallback geht also davon aus, dass der Statuscode, wenn er irgendwie nicht verfügbar ist, zumindest nicht fehlerhaft ist.
quelle
Du solltest benutzen
quelle
However if the form is submitted successfully and no exception is thrown...
Dies ist, was ich zum Erweitern der WebClient-Funktionalität verwende. StatusCode und StatusDescription enthalten immer den neuesten Antwortcode / die neueste Beschreibung.
So können Sie einen Beitrag verfassen und Ergebnisse erhalten über:
quelle
Nur für den Fall, dass jemand anderes eine F # -Version des oben beschriebenen Hacks benötigt.
quelle
Sie sollten in der Lage sein, den Aufruf "client.ResponseHeaders [..]" zu verwenden. Unter diesem Link finden Sie Beispiele für das Zurückholen von Daten aus der Antwort
quelle
Sie können diesen Code ausprobieren, um HTTP-Statuscode von WebException oder von OpenReadCompletedEventArgs.Error abzurufen. Es funktioniert auch in Silverlight, da in SL WebExceptionStatus.ProtocolError nicht definiert ist.
quelle