首页 文章

使用HttpWebRequest从404错误中检索内容

提问于
浏览
2

这类似于这里提出的问题:httpWebRequest - get error content但我希望提供更多信息以期得到答案 .

我正在使用C#与LinkedIn API集成 . 当我对API进行 invalid 调用时,它可以返回类似的HTTP响应(来自Fiddler):

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中似乎很流行 - 我希望有一种方法可以获得这些响应......

1 回答

  • 2

    您可能需要直接点击套接字连接以获取响应xml .

    看到这个答案:https://stackoverflow.com/a/6755142

    在尝试实施亚马逊的Off Amazon Payments API时,我遇到了同样的问题 . 如果我传递了无效的交易ID,则会返回404错误...而不是我所期待的 .

    另外值得注意的是:我在发送http帖子时使用异步,这个404会在BeginGetResponse方法上抛出WebException;而不是在尝试读取回调中的响应时 . 相反,在回调中读取响应流时会引发400 Bad Request WebException .

相关问题