想像小提琴手一样获得 http 响应结果

本文关键字:http 响应 结果 一样 小提琴手 | 更新日期: 2023-09-27 18:36:27

我试图获得与Fiddler从我的应用程序启动网页时获得的相同类型的结果。下面是我正在使用的代码和我得到的结果。 我仅以 google.com 为例。

我需要在代码中修改什么才能获得我想要的结果,还是需要完全不同的方法?

感谢您的帮助。

我的代码:

 // create the HttpWebRequest object
        HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com");
        // get the response object which has the header info, using the GetResponse method
        var objResults = objRequest.GetResponse(); 
        // get the header count
        int intCount = objResults.Headers.Count;
        // loop through the results object
        for (int i = 0; i < intCount; i++)
        {
            string strKey = objResults.Headers.GetKey(i);
            string strValue = objResults.Headers.Get(i);

            lblResults.Text += strKey + "<br />" + strValue + "</br /><br />";
        }

我的结果:

缓存控制专用,最大年龄 = 0

内容类型文本/网页;字符集=ISO-8859-1

日期周二, 05 六月 2012 17:40:38 GMT

到期-1

设置饼干PREF=ID=526197b0260fd361:FF=0:TM=1338918038:LM=1338918038:S=gefqgwkuzuPJlO3G;过期=星期四, 05-六月-2014 17:40:38 GMT;路径=/;domain=.google.com,NID=60=CJbpzMe6uTKf58ty7rysqUFTW6GnsQHZ-Uat_cFf1AuayffFtJoFQSIwT5oSQKqQp5PSIYoYtBf_8oSGh_Xsk1YtE7Z834Qwn0A4Sw3ruVCA9v3f_UDYH4b4fAloFJbW;到期=星期三, 05-十二月-2012 17:40:38 GMT;路径=/;域=.谷歌.com;仅 httponly

P3PCP="这不是 P3P 策略!有关详细信息,请参阅 http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657。

服务器GWS

X-XSS 保护1;模式=块

X 框架选项同源

传输编码分块

============================

提琴手成绩:

结果协议 主机 URL 正文缓存 内容类型 进程注释 自定义

1 304 HTTP www.rolandgarros.com/images/misc/weather/P8.gif 0 max-age=700 到期: 星期二, 05 六月 2012 17:53:40 GMT 图片/gif 火狐:5456
2 200 HTTP www.google.com/23,697 私有,max-age=0 过期:-1 文本/html;字符集=UTF-8 铬:2324
3 304 HTTP www.rolandgarros.com/images/misc/weather/P9.gif 0 max-age=700 到期: 星期二, 05 六月 2012 17:53:57 GMT 图像/gif 火狐:5456
4 200 HTTP 隧道到 translate.googleapis.com:443 0 铬:2324
5 200 HTTP www.google.com

想像小提琴手一样获得 http 响应结果

不同之处在于Fiddler实际上记录了整个会话,而不仅仅是单个HTTP请求。

如果用户加载 Google.com,则响应通常是包含图像,脚本文件,CSS文件等的HTML文档。 然后,您的浏览器将为这些资源中的每一个发起新的 HTTP 请求。 在 Fiddler 运行时,它会跟踪每个 HTTP 请求,并吐出结果代码和有关会话的其他信息。

使用上面的 C# 代码,你只启动一个 HTTP 请求,因此你只有关于单个结果的信息。

你最好写一个浏览器插件。 否则,您还必须解析 HTML 响应并从该文档加载其他资源。

如果确实需要使用 C# 代码执行此操作,则可以使用 HTML 敏捷包分析文档,然后在 HTML 中查找其他资源来模拟浏览器。 还有嵌入式浏览器,如Awesomium,可能会有所帮助。

您没有要求与Fiddler显示的相同信息。 Fiddler 显示 HTTP 状态代码、主机和 URI,以及(从您的示例中显示)内容长度、内容类型和缓存状态。

对于其中的许多,您必须查看响应标头。