【问题标题】:HttpWebRequest - Get Exception Status Code when e.Response is NullHttpWebRequest - 当 e.Response 为 Null 时获取异常状态代码
【发布时间】:2013-10-26 19:21:41
【问题描述】:

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

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 的回复?例如,如果我发送了错误的 URL,WebException 将返回消息“底层连接已关闭:连接已意外关闭。”。在 Fiddler 中,我会收到 504 Status Code 以及一些短信。我说,如果 Fiddler 可以从错误的 WebRequest 中获取状态码结果,那为什么 C# 不能呢?我知道一定有办法,但那是什么?

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

【问题讨论】:

    标签: httpwebrequest fiddler http-status-codes


    【解决方案1】:

    如果出现底层连接已关闭:连接意外关闭。” 服务器没有发回任何数据——它只是关闭连接而不返回任何内容。

    作为代理,Fiddler 检测到这种情况,并生成并返回一个错误,表明服务器响应失败。代理这样做是为了让客户端识别出故障发生在服务器而不是代理

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 2010-10-21
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多