Ich initiiere eine HttpWebRequest und rufe dann deren Antwort ab. Gelegentlich erhalte ich einen Fehler von 500 (oder mindestens 5 ##), aber keine Beschreibung. Ich habe die Kontrolle über beide Endpunkte und möchte, dass das empfangende Ende ein bisschen mehr Informationen erhält. Zum Beispiel möchte ich die Ausnahmemeldung vom Server an den Client übergeben. Ist dies mit HttpWebRequest und HttpWebResponse möglich?
Code:
try
{
HttpWebRequest webRequest = HttpWebRequest.Create(URL) as HttpWebRequest;
webRequest.Method = WebRequestMethods.Http.Get;
webRequest.Credentials = new NetworkCredential(Username, Password);
webRequest.ContentType = "application/x-www-form-urlencoded";
using(HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse)
{
if(response.StatusCode == HttpStatusCode.OK)
{
// Do stuff with response.GetResponseStream();
}
}
}
catch(Exception ex)
{
ShowError(ex);
// if the server returns a 500 error than the webRequest.GetResponse() method
// throws an exception and all I get is "The remote server returned an error: (500)."
}
Jede Hilfe dabei wäre sehr dankbar.
quelle
GetRequestStream
undGetResponse
kann Ausnahmen werfen ?Ich bin auf diese Frage gestoßen, als ich versucht habe zu überprüfen, ob eine Datei auf einer FTP-Site vorhanden ist oder nicht. Wenn die Datei nicht vorhanden ist, tritt beim Überprüfen des Zeitstempels ein Fehler auf. Aber ich möchte sicherstellen, dass der Fehler nichts anderes ist, indem ich seinen Typ überprüfe.
Die
Response
Eigenschaft onWebException
ist vom Typ,FtpWebResponse
für den Sie ihreStatusCode
Eigenschaft überprüfen können, um festzustellen, welcher FTP-Fehler vorliegt Sie haben.Hier ist der Code, mit dem ich gelandet bin:
quelle
Ich sah mich einer ähnlichen Situation gegenüber:
Ich habe versucht, die Raw-Antwort im Falle eines HTTP-Fehlers zu lesen, der einen SOAP-Dienst mithilfe von BasicHTTPBinding verbraucht.
Beim Lesen der Antwort mit
GetResponseStream()
wurde jedoch der Fehler angezeigt:Also, dieser Code hat bei mir funktioniert:
quelle
Sie können diese Bibliothek auch verwenden die HttpWebRequest und Response in einfache Methoden umschließt, die Objekte basierend auf den Ergebnissen zurückgeben. Es verwendet einige der in diesen Antworten beschriebenen Techniken und verfügt über reichlich Code, der von Antworten aus diesem und ähnlichen Themen inspiriert ist. Es fängt automatisch alle Ausnahmen ab, versucht so viel Kesselplattencode wie möglich zu abstrahieren, um diese Webanforderungen zu stellen, und deserialisiert das Antwortobjekt automatisch.
Ein Beispiel dafür, wie Ihr Code mit diesem Wrapper aussehen würde, ist so einfach wie
Vollständige Offenlegung Diese Bibliothek ist eine kostenlose Open-Source-Wrapper-Bibliothek, und ich bin der Autor dieser Bibliothek. Ich verdiene kein Geld damit, habe es aber im Laufe der Jahre als äußerst nützlich empfunden und bin mir sicher, dass jeder, der noch die Klassen HttpWebRequest / HttpWebResponse verwendet, dies auch tun wird.
Es ist kein Patentrezept, unterstützt jedoch das Abrufen, Veröffentlichen, Löschen mit asynchronem und nicht asynchronem Abrufen und Veröffentlichen sowie JSON- oder XML-Anforderungen und -Antworten. Es wird ab dem 21.06.2020 aktiv gepflegt
quelle
quelle