HttpWebRequest /响应抛出错误“未找到”
问题描述:
我正在对REST服务进行API调用。如果提交的密码正确,则REST服务返回包含用户令牌的XML字符串,如果不是,则返回包含数据的XML字符串。HttpWebRequest /响应抛出错误“未找到”
下面是一个例子,如果密码不正确:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<authenticationResponse>
<statusCode>403</statusCode>
<errors>
<error>
....
</error>
</errors>
<timestamp>2011-03-31 22:45:03 GMT</timestamp>
</authenticationResponse>
随着低于这个代码,它出现.NET在翻译这对实际的错误。我还是希望它读取XML数据和忽略任何错误:
RequestData requestData = (RequestData)result.AsyncState;
HttpWebResponse response =
(HttpWebResponse)requestData.Request.EndGetResponse(result);
我怎么能忽略错误,但仍然创造读取XML流?
答
Catch WebException,检查异常状态,读取响应。看到这些问题的例子:
答
您的代码没有将其转换为实际错误 - 403
的HTTP状态代码为“Forbidden”。
HTTP“未找到”的HTTP状态代码为404
,因此它看起来像您请求的HTTP端点不存在于REST服务中。
答
好了,所以我想通了,这里有几部分组成。
首先,当传递的参数不符合期望值时,API将生成该xml。在这种情况下,如果密码不正确,它将返回403.
该错误是一个错误,所以框架将其视为这样,但错误包含响应无论如何,您只需要获取回应错误。这实质上是问题的答案。必须赶上错误,并将错误的响应拦截以读取流中的数据,这正是Mauricio所要达到的。
基本上,我想这里的所有答案都是正确的,或者它的一些部分,只是花了一点时间把它放在一起。
谢谢你们。
不幸的是,这是我的路径必须采取,所以你得到答案。 – Dave 2011-04-01 02:47:29
@Dave:这就是WebRequest的设计方式...... – 2011-04-01 03:41:20