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

标签 c# .net api httpwebrequest linkedin-api

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

我正在使用 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() 的尝试都会导致流不可读 异常。

这种在非 200 HTTP 状态响应中返回错误消息的方法在 Web API 中似乎很流行 - 我希望有一种方法可以获取这些响应...

最佳答案

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

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

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

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

关于c# - 使用 HttpWebRequest 从 404 错误中检索内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12911258/

相关文章:

c# - 是否应该避免使用 LINQ,因为它很慢?

c# - XMLSerializer反序列化——数组元素顺序

C# double.TryParse with InvariantCulture 返回意外结果

python - 为什么在 telegram 中调用 auth.signIn 时会收到 PHONE_NUMBER_UNOCCUPIED 错误?

json - 尝试使用 Google Image API 在 Swift 中获取图像 URL

c# - 取消 token 抛出异常。无法捕获OperationCanceledException。我遇到了用户未处理的情况

c# - 将颜色与6位颜色相互转换

c# - 如何在选项卡中选择 Winforms NumericUpDown 中的所有文本?

.net - 理解byref、ref和&

android - 将 Google maps api v2 添加到现有项目