想得到像Fiddler一样的http响应结果

时间:2012-06-05 18:16:17

标签: c# asp.net

当我从我的应用程序启动网页时,我正试图获得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 />";
        }

我的结果:

缓存控制 private,max-age = 0

内容类型 为text / html;字符集= ISO-8859-1

日期 星期二,2012年6月5日17:40:38 GMT

到期 -1

设置Cookie PREF = ID = 526197b0260fd361:FF = 0:TM = 1338918038:LM = 1338918038:S = gefqgwkuzuPJlO3G;到期= 2014年6月5日星期四17:40:38 GMT;路径= /;域= .google.com,NID = 60 = CJbpzMe6uTKf58ty7rysqUFTW6GnsQHZ-Uat_cFf1AuayffFtJoFQSIwT5oSQKqQp5PSIYoYtBf_8oSGh_Xsk1YtE7Z834Qwn0A4Sw3ruVCA9v3f_UDYH4b4fAloFJbW; expires = Wed,05-Dec-2012 17:40:38 GMT;路径= /;域= .google.com;仅Http

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

服务器 GWS

X-XSS-保护 1;模式=块

X框-选项 SAMEORIGIN

传送编码 分块

========================= 提琴手的结果:

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

1 304 HTTP www.rolandgarros.com /images/misc/weather/P8.gif 0 max-age = 700到期:2012年6月5日星期二17:53:40 GMT image / gif firefox:5456
2 200 HTTP www.google.com / 23,697 private,max-age = 0 Expires:-1 text / html; charset = UTF-8 chrome:2324
3 304 HTTP www.rolandgarros.com /images/misc/weather/P9.gif 0 max-age = 700到期:星期二,2012年6月5日17:53:57 GMT image / gif firefox:5456
4 200 HTTP隧道转换.googleapis.com:443 0 chrome:2324
5 200 HTTP www.google.com

2 个答案:

答案 0 :(得分:3)

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

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

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

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

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

答案 1 :(得分:0)

您不是要求提供Fiddler所显示的相同信息。 Fiddler显示HTTP状态代码,主机和URI以及(从您的示例中看起来)内容长度,内容类型和缓存状态。

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