0

質問の背景:HttpWebRequestは500のステータスコードを返しますが、APIからJSONを返していますか?

私はアズールでホストされていたWeb APIへの簡単なHttpWebRequestを作るしようとしています。

問題:私は、このようなポストマンなどのブラウザやリクエストツールを使用して、私のWeb APIのエンドポイントにアクセスした場合

私は問題なくJSON応答を受け付けております。

HttpWebRequestコールで同じエンドポイントにアクセスしようとすると、致命的なエラー500が発生しますが、Try Catchの応答プロパティでJSONの応答が返されていることがわかります。

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

コード:

次は私が持っているウェブ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(); 
    } 

私はAの原因を特定することを理解します500はまっすぐではありませんが、私はこのエラーが表示されますが、まだ例外をスローしているサービスからJSONを受け取っている理由を誰にでも教えていただけますか? !あなたが世話にする必要がありWebHeadersに関するいくつかのプロパティがあります

+0

があなたのJSONレスポンスが有効でいますか?あなたが与えたレスポンスは有効ではありません。おそらくサンプルデータを追加したからです.2番目のメソッドコードを追加し、レスポンスメッセージに例外を追加してください! –

答えて

0

例コード:

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() 
関連する問題