在我引用非.net内置函数之前(替代)

我想知道

内置的.Net类可以使用:

WebBrowserWebBrowserBase

我想知道的是:两者之间有什么区别? 。

如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

10-05 23:46