在我引用非 .net 内置(替代方案)之前
我想了解
内置的.Net
类可以提供使用:
WebBrowser
和 WebBrowserBase
类
我想知道的是:这两者之间有什么区别?。
如 msdn 在后面一篇中所述 - WebBrowserBase -
“此 API 支持 .NET Framework 基础结构,不适合直接在您的代码中使用”
问题始于一个简单的任务:从网站检索文件(数据源 xml)。 听起来很简单?所以你可以使用任何方法...,最好是最简单且资源高效的方法。
但是!
场景是:同一来源(只有一个可靠)最近通过使用 cookies 阻止了自动流量,因为我可以理解 WebClient 正在使用与您的主要浏览器(在我的情况下为 IE9)相同的资源。
...经过我的研究,使用网络浏览器“引擎”作为文件检索器...
会完美地完成这项工作。
您可以使用任何(不仅仅是 Microsoft IE)
关于我所做的其他测试,您可以访问:
http://seleniumhq.org/docs/03_webdriver.html
+
最佳答案
你的问题
scenario is, that same source (single one to be reliable) was blocking automatic traffic recently by using 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的区别,WebBrowser继承了WebBrowserBase来扩展它,使其成为一个功能齐全的网页浏览器。如果您想自定义超出支持范围的 WebBrowser,WebBrowserBase 会派上用场 - 您可以覆盖某些内容并使用 WebBrowserBase 来扩展功能等。一般来说,除非绝对必要,否则您应该坚持只使用普通的 WebBrowser 控件 - 并且仅当您正在呈现网页或想使用它来非法执行 javascript 时。
关于扩展 WebBrowser 的一般评论
我个人发现的对网络浏览器最有用的修改之一是公开下载标志,因此您可以控制网络浏览器是否下载图像等。如何执行此操作的一个很好的示例如下:https://stackoverflow.com/a/7738174/184746
关于c# - WebBrowser 与 WebBrowserBase 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433369/