在我引用非.net内置(替代品)之前
我想了解
.Net
类可以提供使用: WebBrowser
& WebBrowserBase
课程
我想知道的是:这两者之间有什么区别?。
正如msdn在后一篇文章中所述 - WebBrowserBase -
“此API支持.NET Framework基础结构,并且不能直接在您的代码中使用”
问题始于一个简单的任务:从网站检索文件(datasource xml)。 声音简单?所以你可以使用任何方法...,最好是最简单的方法。资源有效率。
但!
场景是:相同的源(单一的可靠)最近通过使用cookie来阻止自动流量,因为我可以使用与主浏览器相同的资源(在我的情况下是IE9)。
....经过我的研究,使用WebBrowser“引擎”作为文件检索器......
将完美地完成工作。
您可以使用任何(不仅仅是Microsoft IE)
关于我可以访问的其他测试:
http://seleniumhq.org/docs/03_webdriver.html
+
答案 0 :(得分:6)
情况是,相同的来源(单一来源可靠)最近通过使用cookies
来阻止自动流量
好吧,如果这是你的问题(cookies)为什么不尝试这个网络客户端?
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以扩展它并使其成为一个功能齐全的Web浏览器。 WebBrowserBase派上用场的地方在于,如果您希望自定义WebBrowser超出支持范围,您可以覆盖内容并使用WebBrowserBase来扩展功能等。作为一项规则,除非你绝对必须,否则你应该坚持只使用普通的WebBrowser控件 - 并且只有当你正在渲染网页或者想用它来虚伪地执行javascript时。
我个人为webbrowser发现的最有用的修改之一就是暴露了下载标志,因此您可以控制webbrowser是否下载图像等。这里有一个很好的例子:https://stackoverflow.com/a/7738174/184746