在我引用非.net内置函数之前(替代)
我想知道
内置的.Net
类可以使用:WebBrowser
和WebBrowserBase
类
我想知道的是:两者之间有什么区别? 。
如msdn在后面的一章中所述-WebBrowserBase-
“此API支持.NET Framework基础结构,不能直接在您的代码中使用”
这个问题始于一个简单的任务:从网站检索文件(数据源xml)。
听起来很简单?因此您可以使用任何方法...,最好是最简单且资源高效的方法。
但是!
场景是:同一来源(可靠的是单一来源)最近通过使用cookie来阻止自动流量,因为我可能不敢相信WebClient使用的是与您的主要浏览器相同的资源(在我的情况下为IE9)。
....经过研究后,我使用WebBrowser“引擎”作为文件检索器...
会完美地完成工作。
您可以使用任何一种(不仅仅是Microsoft IE)
关于我已让您访问的其他测试:
http://seleniumhq.org/docs/03_webdriver.html
+
https://code.google.com/p/selenium/downloads/list
最佳答案
你的问题
场景是,同一来源(可靠的是单一来源)最近通过使用cookie阻止了自动流量。
好吧,如果这是您的问题(cookie),那么为什么不尝试使用此Web客户端呢?
public class CookieWebClient : WebClient
{
private readonly CookieContainer _cookies = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
HttpWebRequest webRequest = request as HttpWebRequest;
if (webRequest != null)
{
webRequest.CookieContainer = _cookies;
}
return request;
}
}
WebBrowser与WebBrowserBase
至于WebBrowser和WebBrowserBase之间的区别,WebBrowser继承了WebBrowserBase来对其进行扩展,并使其成为一个功能齐全的Web浏览器。如果您要自定义WebBrowser不受支持的范围,则可以方便地使用WebBrowserBase-您可以覆盖内容并使用WebBrowserBase扩展功能等。通常,除非绝对必要,否则应仅使用纯WebBrowser控件-仅在呈现网页或希望使用它虚假执行javascript时。
关于一般扩展WebBrowser的评论
我个人发现的用于Web浏览器的最有用的修改之一是公开下载标志,因此您可以控制Web浏览器是否下载图像等。如何执行此操作的一个很好的示例在这里:https://stackoverflow.com/a/7738174/184746