是否可以捕获并打印出来自Web浏览器控件的所有请求和响应,包括异步请求?
答案 0 :(得分:5)
您是否考虑过使用Fiddler?他们甚至可以使用API来实现此目的。
修改强>
您可以尝试使用Navigated event或LoadCompleted event获取回复信息。您可以使用Navigating event获取请求信息。这些事件可能会在异步请求中发生,但我不确定。
编辑反击
我使用上述事件进行了一些测试,我担心什么都没有。事件没有给我任何我可以使用的东西。即使他们可以访问webresponse和webrequest,但在我的测试中它们总是无效/无效。
我想令人遗憾的是,网页浏览器控件不是按照您想要的方式使用。它仅用于提供网页/数据,并不提供查看数据的权限。我认为他们是以C.Y.A.衡量,以防止有人制作恶意软件/间谍软件浏览器。
您最好的选择是将网页浏览器与小提琴手(或其他一些“嗅探”库)结合起来。
答案 1 :(得分:4)
实现此目的的另一种方法是实现自己的Asynchronous Pluggable Protocol
处理程序,但这不是一项简单的任务。基本上,APP是Internet Explorer用于通过URLMON从URL下载数据的机制。您可以实现自己的APP来替换URLMON使用的默认处理程序,这将允许您控制所有请求和响应。
除了替换默认处理程序,您还可以实现包装它的APP。一个常见的例子是Igor Tandetnik创建的PassThroughAPP,它展示了如何完成这样的事情。您还可以在此代码项article中找到C#实现。我相信您最感兴趣的接口是IHttpNegotiate和OnResponse方法,它允许客户端检查请求和响应标头。
PassThroughApp存在一些问题,详细说明以及可能的解决方案here。下面列出了一些资源。
http://support.microsoft.com/?id=kb;en-us;303740 http://www.codeproject.com/KB/aspnet/AspxProtocol.aspx