HttpWebRequest - 当e.Response为空时获取异常状态代码

时间:2013-10-26 19:21:41

标签: httpwebrequest fiddler http-status-codes

我正在使用HttpWebRequest来对服务器进行一些调用。有时,这些调用会创建在try-catch块中处理的异常。但是,异常的响应始终为null,我无法获取异常的状态代码。

try
{
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);

  using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
  {
    StreamReader reader = new StreamReader(response.GetResponseStream());
  }
}
catch (WebException e)
{
  //e.Response is always null!
}

有什么办法可以获得WebException回复吗?例如,如果我发送了错误的网址,WebException将返回消息“基础连接已关闭:连接意外关闭。”。在Fiddler我会得到504 Status Code加上一些短信。我说,如果Fiddler可以从错误的WebRequest获取状态代码结果,那么为什么C#不能?我知道必须有办法,但那是什么方式?

任何机构都知道如何获取状态代码?还是WebException回复?

1 个答案:

答案 0 :(得分:0)

如果出现像这样的错误,底层连接已关闭:连接意外关闭。“服务器没有发送任何数据 - 它只是关闭连接而不返回任何内容。

作为代理,Fiddler会检测到这种情况,并生成并返回错误,指示服务器无法响应。代理执行此操作以便客户端识别出服务器上的故障,而不是代理