我正在对REST服务进行API调用。如果提交的密码正确,则REST服务返回包含用户令牌的XML字符串;如果不是,则返回包含数据的XML字符串。
以下是密码不正确的示例:
<?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?
答案 0 :(得分:0)
您的代码未将此转换为实际错误 - HTTP状态代码403
为“禁止访问”。
HTTP“Not Found”的HTTP状态代码为404
,因此看起来您请求的HTTP端点在REST服务中不存在。
答案 1 :(得分:0)
Catch WebException,检查异常状态,阅读响应。请参阅以下问题以获取示例:
答案 2 :(得分:0)
好的我知道了,这里有几个部分。
首先,当传递的参数不符合预期时,API会生成该xml。在这种情况下,如果密码不正确,它将传回403。
错误是一个错误,因此框架会将其视为错误,但是错误包含响应,您只需要从错误中获得响应。这基本上是问题的答案。必须抓住错误并从错误中获取响应以读取流中的数据,这正是Mauricio所要达到的。
基本上,我猜这里的所有答案都是正确的,或者是它的一部分,只需花一点时间就可以把它们放在一起。
谢谢大家。