HttpWebRequest / Response抛出错误“未找到”

时间:2011-03-31 23:02:05

标签: windows windows-phone-7 .net-4.0 silverlight-3.0

我正在对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?

3 个答案:

答案 0 :(得分:0)

您的代码未将此转换为实际错误 - HTTP状态代码403为“禁止访问”。

HTTP“Not Found”的HTTP状态代码为404,因此看起来您请求的HTTP端点在REST服务中不存在。

答案 1 :(得分:0)

Catch WebException,检查异常状态,阅读响应。请参阅以下问题以获取示例:

答案 2 :(得分:0)

好的我知道了,这里有几个部分。

首先,当传递的参数不符合预期时,API会生成该xml。在这种情况下,如果密码不正确,它将传回403。

错误是一个错误,因此框架会将其视为错误,但是错误包含响应,您只需要从错误中获得响应。这基本上是问题的答案。必须抓住错误并从错误中获取响应以读取流中的数据,这正是Mauricio所要达到的。

基本上,我猜这里的所有答案都是正确的,或者是它的一部分,只需花一点时间就可以把它们放在一起。

谢谢大家。