2

这类似于此处提出的问题:httpWebRequest - 获取错误内容 ,但我希望提供更多信息以期获得答案。

我正在使用 C# 与 LinkedIn API 集成。当我对 API 进行无效调用时,它可以返回如下 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 中似乎很流行——我希望有一种方法可以得到这些响应......

4

1 回答 1

2

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

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

我在尝试实现亚马逊的 Off Amazon Payments API 时遇到了同样的事情。如果我传递了无效的事务 ID,它们会返回 404 错误……这不是我所期望的。

另请注意:我在发送 http 帖子时使用异步,并且此 404 在 BeginGetResponse 方法上引发 WebException;不是在尝试读取回调中的响应时。相反,在回调中读取响应流时会引发 400 Bad Request WebException。

于 2015-03-21T17:36:58.740 回答