【发布时间】:2009-09-30 10:00:51
【问题描述】:
我正在使用 HttpWebRequest 抓取网站,但该网站返回错误。当我从浏览器中点击该页面时,该页面工作正常。我想比较它们以查看可能导致错误的原因。我知道如何拦截来自浏览器的请求以检查标头,但是如何查看 HttpWebRequest 发送的数据?
【问题讨论】:
标签: c#
我正在使用 HttpWebRequest 抓取网站,但该网站返回错误。当我从浏览器中点击该页面时,该页面工作正常。我想比较它们以查看可能导致错误的原因。我知道如何拦截来自浏览器的请求以检查标头,但是如何查看 HttpWebRequest 发送的数据?
【问题讨论】:
标签: c#
为了比较您在代码中所做的事情和浏览器所做的事情,我相信像Fiddler 这样的 HTTP 调试工具会是最简单的解决方案。
Fiddler 充当客户端和服务器之间的代理,并显示通过 HTTP 协议发送的所有信息。
您可能需要配置您的 .NET 应用程序以使用 Fiddler 提供的代理。 This blog post 提供了有关该主题的详细信息。
【讨论】:
http://www.fiddler2.com/fiddler2/ 是处理此类事情的绝佳工具。
【讨论】:
Firebug 的网络面板将显示所有请求,包括标头。
编辑:我一发布,您就已经知道如何在浏览器中进行操作了。试试 Headers 属性:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.stackoverflow.com");
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Console.WriteLine(response.Headers);
【讨论】:
您可以通过 Headers 属性从 HTTPWebRequest 获取标头。来自 MSDN:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.headers.aspx
【讨论】:
我不知道是否有一个通用的解决方案。但是,如果您使用的是 Firefox,两个附加组件中的任何一个都会有所帮助:Firebug 或 LiveHTTPHeaders。
【讨论】: