Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HttpWebRequest从404错误中检索内容_C#_.net_Api_Httpwebrequest_Linkedin - Fatal编程技术网

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

C# 使用HttpWebRequest从404错误中检索内容,c#,.net,api,httpwebrequest,linkedin,C#,.net,Api,Httpwebrequest,Linkedin,这类似于这里提出的一个问题: 但我希望能提供更多的信息,希望能找到答案 我正在使用C#与LinkedIn API集成。当我对API进行无效的调用时,它可以返回类似这样的HTTP响应(来自Fiddler): 未找到HTTP/1.1 404 服务器:ApacheCoote/1.1 x-li-request-id:VL2EER2ROJ 日期:2012年10月16日星期二08:52:59 GMT 变化:* x-li-format:xml 内容类型:text/xml;字符集=UTF-8 内容长度:266

这类似于这里提出的一个问题: 但我希望能提供更多的信息,希望能找到答案

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

未找到HTTP/1.1 404 服务器:ApacheCoote/1.1 x-li-request-id:VL2EER2ROJ 日期:2012年10月16日星期二08:52:59 GMT 变化:* x-li-format:xml 内容类型:text/xml;字符集=UTF-8 内容长度:266 404 1350377580000 VL2EER2ROJ 0 找不到成员{/people/XXXXXX} 我特别希望看到错误xml,但是HttpWebRequest似乎只是抛出异常,然后与内容无关。在我的调试器中,我可以看到内容长度是266,但任何调用
(System.Net.WebException).Response.GetResponseStream()
的尝试都会导致
流不可读
异常


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

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

看看这个答案:

我在尝试实现Amazon的Off-Amazon支付API时遇到了同样的问题。如果我传递了一个无效的事务id,他们会返回一个404错误…这不是我所期望的


还需要注意的是:我在发送http post时使用async,这个404在BeginGetResponse方法上抛出一个WebException;在尝试读取回调中的响应时不是。相反,读取回调中的响应流时会引发400个错误请求WebException。

这是什么版本的.NEt?这听起来像个虫子。获取system.net跟踪日志,并使用该日志在msdn社区站点上创建错误报告。顺便问一下,你能展示你的代码吗?可能有什么东西可以更改以使其正常工作?:“注意:如果引发WebException,请使用异常的响应和状态属性来确定服务器的响应。”另请参阅。@CodeCaster:如问题中所述,尝试访问响应流会导致“无法从流读取”异常。引用副本中提供的答案不正确correct@feroze这是在.NET4.0中发生的(我假设所有早期版本都是这样)。我倾向于同意你的观点,即这是一个错误framework@GrantDG请出示你的密码。如果使用
catch(WebException-wex){var resp=newstreamreader(wex.Response.GetResponseStream()).ReadToEnd();}
它应该可以工作。这很可能不是框架中的bug,而是代码中的bug,否则很多人都会遇到它。
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>