【问题标题】:How do i get detailed info from a HttpWebResponse如何从 HttpWebResponse 获取详细信息
【发布时间】:2009-02-05 14:41:29
【问题描述】:

我正在发布 httpwebrequst,但在 HttpWebResponse 中我收到错误代码 403 被禁止。现在这个错误对我来说不是很有用。

然后我尝试了一个测试程序(我没有 :() 的源代码并用它来发布相同的帖子,它返回了一个禁止的代码 403 但还告诉我需要 SSL。是吗是否可以从失败的 httpwebrequest 中获取更多“服务器端”详细信息,而不仅仅是错误代码?

谢谢


只是为了解决问题。我得到 403 很好,我只是想知道为什么当我在 webexception 中看到类似的东西时测试程序可以告诉 SSL 需要 SSL

【问题讨论】:

  • 你能添加更多关于你运行它的环境的信息吗?

标签: c# httpwebrequest httpwebresponse


【解决方案1】:

如果由于协议错误而引发 WebException,它的响应 属性将包含从网络收到的实际响应 服务器。

try 
{
    // Do WebRequest
}
catch (WebException ex) 
{
    if (ex.Status == WebExceptionStatus.ProtocolError) 
    {
        HttpWebResponse response = ex.Response as HttpWebResponse;
        if (response != null)
        {
            // Process response
        }
    }
}

【讨论】:

    【解决方案2】:

    没有明确的方式来询问更详细的信息,不——基本上,你得到你得到的。

    也就是说,Web 服务器通常会返回文档以及有时包含有用信息的错误代码,就像您得到的解释 SSL 证书问题的错误代码一样。如需帮助找出此类问题,请查看Fiddler——它会向您展示有关服务器响应的所有信息。

    至于你的具体错误,很难说; 403 可以表示一些不同的事情。但是,如果您收到一个表明与 SSL 有关的响应,您可能只是在处理一个错误或过期的证书 (see this question),或者服务器可能需要一个安全连接但没有得到一个。您是否尝试过直接使用 Web 浏览器访问 URL,只是为了查看您是否收到提示证书问题的警告,或者除了未经处理的 403 响应之外的任何内容?

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2014-10-15
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      相关资源
      最近更新 更多