【问题标题】: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 响应之外的任何内容?