0

問題背景:HttpWebRequest提供了500個狀態碼,但是從API返回JSON?

我試圖做一個簡單的HttpWebRequest與我在Azure中已經承載的Web API。

的問題:

如果我通過瀏覽器或我收到沒有問題JSON響應的請求的工具,如郵差訪問我的Web API終點。

如果我嘗試通過HttpWebRequest呼叫訪問相同的終點,則會收到500致命錯誤,但我能夠在Try Catch的響應屬性中看到已返回JSON響應。

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

驗證碼:

以下是我提出到Web API我有簡單的請求。如所陳述之前,在Catch響應是返回回JSON我期望,如圖所示:

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

的請求:

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(); 
    } 

我理解,識別的一個原因500並不是直截了當,但任何人都可以提供一個理由,我會得到這個錯誤,但仍然收到服務,顯然是拋出異常JSON? !

+0

請問您的JSON響應是有效的?您提供的回覆無效。可能是因爲您添加了僅示例數據。第二件事添加您的完整方法代碼並將異常添加到響應消息! –

回答

0

大約有WebHeaders你必須小心一些特性例如代碼:

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() 
相關問題