0

Frage Hintergrund:HttpWebRequest gibt 500 Statuscode, aber gibt JSON von der API zurück?

Ich versuche, eine einfache HttpWebRequest auf eine Web-API zu machen, die ich in Azure gehostet haben.

Das Problem:

Wenn ich meinen Web-API-Endpunkt über einen Browser oder ein Tool zum Zugriff wie Postman ich ohne Probleme eine JSON Antwort erhalte.

Wenn ich versuche, den gleichen Endpunkt durch einen HttpWebRequest Anruf Zugriff erhalte ich einen 500 fatalen Fehler, aber ich bin in der Lage in der Ansprecheigenschaft der Try Catch, um zu sehen, dass die JSON Antwort zurückgegeben wurde.

The remote server returned an error: (500) Internal Server Error. 

Der Code:

Das Folgende ist die einfache Anfrage ich auf den Web-API mache ich habe. Wie bereits erwähnt, in der Catchdie Antwort die JSON Ich erwarte, dass der Rückkehr zurück, wie gezeigt:

{"ResponseMessage":"OK","ResponseContent:[{"kind":"youtube#playlistItem","etag":"\"gMxXHe- ........ etc }]} 

Die Anfrage:

string url ="http://myapi.azurewebsites.net/api/videos/GetYouTubeVideos"; 

    try 
    { 
     HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; 

     WebResponse wr = req.GetResponse(); 
    } 
    catch (WebException wex) 
    { 
     var pageContent = new StreamReader(wex.Response.GetResponseStream()) 
           .ReadToEnd(); 
    } 

Ich schätze, dass die Ursache für eine Identifizierung 500 ist nicht geradlinig, aber kann jemand einen Grund geben, dass ich diesen Fehler bekommen würde, aber auch noch die JSON von dem Dienst erhalten, der anscheinend eine Ausnahme wirft? !

+0

Hat Ihr JSON-Antwort gültig ist? Die Antwort, die Sie gegeben haben, ist nicht gültig. Wahrscheinlich ist es, weil Sie nur Beispieldaten hinzugefügt haben. Zweite Sache fügen Sie Ihren vollständigen Methodencode hinzu und fügen Sie der Antwortnachricht eine Ausnahme hinzu! –

Antwort

0

gibt es einige Eigenschaften über WebHeaders Sie Pflege sein müssen Beispielcodes:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 
webRequest.Method = "GET"; 
webRequest.Proxy = webProxy; 
webRequest.AllowAutoRedirect = true; 
webRequest.Timeout = 20 * 1000; 
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; 
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"; 
WebResponse wr = webRequest.GetResponse() 
Verwandte Themen