2

在我引用非 .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

4

1 回答 1

6

你的问题

情况是,同一来源(一个可靠的)最近通过使用 cookie 阻止了自动流量

好吧,如果那是你的问题(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 对其进行扩展,使其成为一个功能齐全的网络浏览器。WebBrowserBase 派上用场的地方是,如果您想自定义超出支持范围的 WebBrowser - 您可以覆盖事物并使用 WebBrowserBase 来扩展功能等。作为一项规则,除非您绝对必须,否则您应该坚持只使用普通的 WebBrowser 控件 - 并且仅当您正在呈现网页或想使用它来恶意执行 javascript 时。

关于扩展 WebBrowser 的一般评论

我个人为网络浏览器发现的最有用的修改之一是公开下载标志,因此您可以控制网络浏览器是否下载图像等。如何做到这一点的一个很好的例子是:https ://stackoverflow.com/一个/7738174/184746

于 2012-11-24T18:12:12.927 回答