none
HttpWebRequest/WebResponse Fehler-Antworttext RRS feed

  • Frage

  • Hallo Leute,

    es kann sein, dass ich mich beim Suchen nur Doof angestellt habe, aber ich finde keine Möglichkeit den Antworttext des Servers beim Fehler mit dem folgenden Quelltext abzufragen.

    HttpWebRequest httpWebRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
    httpWebRequest.Method = "GET";
    httpWebRequest.Headers.Add("Authorization", "blabla");
    
    string strResponse = "";
    
    try
    {
       WebResponse response = httpWebRequest.GetResponse();
       StreamReader reader = new StreamReader(response.GetResponseStream());
       strResponse = reader.ReadToEnd();
       httpWebRequest.GetResponse().Close();
    }
    catch (Exception e)
    {
       System.Diagnostics.Debug.WriteLine(e.Message);
    }

    Wenn ich die URL im Chrome aufrufe erhalte ich auch folgende Anzeige:

    <Errors>
       <Error>
         <Source>OAuth.AuthorizationHeader</Source>
         <ReasonCode>MISSING_REQUIRED_INPUT</ReasonCode>
         <Description>Invalid Authorization header</Description>
         <Recoverable>false</Recoverable>
       </Error>
    </Errors>

    Diese Anzeige habe ich auch nach einigem Ausprobieren mit dem Internet Explorer geschafft. Dafür musste ich aber erst folgende Schritte durchführen: IE -> F12 -> Netzwerk -> Aufzeichnung starten -> URL aufgerufen -> Aufzeichnung stoppen -> Register "Antworttext"

    Was ich wissen möchte ist, wie bekomme ich diesen Fehler-Antwortext in meinem Quelltext zurück gegeben? Ich erhalte nur ein läppisches "HTTP 400 Ungültige Anforderung" in der Exception-Message (die InnerException ist null), was mir aber beim Debuggen bei weitem nicht ausreicht.


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw


    Dienstag, 11. September 2012 21:45

Antworten

  • Habe es jetzt selber durch einige Experimente hinbekommen. Ich poste mal meine Lösung obwohl ich die Lösungen im Nachhinein im Internet gefunden habe.

    HttpWebRequest httpWebRequest = System.Net.WebRequest.Create(url) as HttpWebRequest; httpWebRequest.Method = "GET"; httpWebRequest.Headers.Add("Authorization", "blabla"); string strResponse = ""; try { WebResponse response = httpWebRequest.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); strResponse = reader.ReadToEnd(); httpWebRequest.GetResponse().Close(); } catch (WebException e) { if (e.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse response = (HttpWebResponse)e.Response; using (var stream = e.Response.GetResponseStream()) { using (var reader = new StreamReader(stream)) {

    // Liefert mir die gewünschte Information System.Diagnostics.Debug.WriteLine(reader.ReadToEnd()); } } } } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); }

    Weitere Links in denen auch das Problem gelöst wurde:

    500 Internal Server Error when using HttpWebRequest, how can I get to the real error?
    HttpWebRequest/Response throwing error “Not Found”
    WebException when reading a WebException's response stream


    Gruß
    Rudolf

    "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." Georg Bernhard Shaw


    Mittwoch, 12. September 2012 09:51