これは、 httpWebRequest - get error contentという質問に似ています が、回答を期待してさらに情報を提供したいと考えています。
C# を使用して LinkedIn API と統合しています。API に対して無効な呼び出しを行うと、(Fiddler から) 次のような HTTP 応答が返されることがあります。
HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
x-li-request-id: VL2EER2ROJ
Date: Tue, 16 Oct 2012 08:52:59 GMT
Vary: *
x-li-format: xml
Content-Type: text/xml;charset=UTF-8
Content-Length: 266
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<error>
<status>404</status>
<timestamp>1350377580000</timestamp>
<request-id>VL2EER2ROJ</request-id>
<error-code>0</error-code>
<message>Could not find member {/people/XXXXXX}</message>
</error>
特にエラーxmlを取得したいのですが、HttpWebRequestは単に例外をスローしているようで、コンテンツとは何の関係もありません。私のデバッガーでは、コンテンツの長さが 266 であることを確認できますが、呼び出しを試みると(System.Net.WebException).Response.GetResponseStream()
例外が発生しstream was not readable
ます。
200 以外の HTTP ステータス レスポンス内でエラー メッセージを返すこの方法は、Web API で非常に人気があるようです。これらのレスポンスを取得する方法があることを願っています...