有没有一种方法可以捕获并打印出Web浏览器控件的所有请求和响应,包括异步请求?
你有没有考虑使用 Fiddler?他们甚至有一个API,你可能可以用来做这个。
编辑
你可以尝试使用Navigated事件或LoadCompleted事件获取响应信息。你可能可以使用Navigating事件获取请求信息。这些事件可能会在异步请求时发生,但我不确定。
编辑再次出击
我进行了一些测试,使用上述事件,但恐怕我什么都没得到。这些事件没有给我任何可用的东西。即使它们可以访问webresponse和webrequest,在我的测试中它们始终是空的/无效的。
我想不幸的事实是,网络浏览器控件并不打算用于您想要的方式。它只是用于提供网页/数据,并且不提供您查看数据的访问权限。我认为他们这样做是为了预防有人制作恶意软件/间谍浏览器。最好的方法是将网络浏览器与fiddler(或其他“嗅探”库)配对使用。另一种实现此目的的方法是通过实现自己的异步可插入协议
处理程序,但这不是一项简单的任务。基本上,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