我正在尝试构建一个IE插件,它必须代表用户进行少量的Web请求。要以程序方式提出网络请求,我可以使用以下代码。
var url = "www.example.com";
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
响应变量将具有来自Web服务器的响应。现在我想执行这个响应,因为它将在真实的浏览器中执行(但对用户隐藏;我不能使用真实的浏览器)。在这个检索到的页面中几乎没有java脚本,实际上我想执行它们。有可能以某种方式做到这一点吗?
这是可能的。您必须实例化一个Windows.Forms.WebBrowser
控件,而不将其附加到任何位置,这样它就不可见了。然后你有两个选项:
- 使用
Navigate
方法导航到URL,这意味着整个页面将像在普通浏览器中一样加载,因此您不需要在代码中使用WebRequest
加载内容 - 如果确实希望单独下载HTML,请通过设置
DocumentText
属性将HTML代码加载到WebBrowser
控件
唯一担心的是,此操作可能相当耗费资源,因此将其转移到另一个进程可能是有意义的。