C# WebBrowser与WebBrowserBase类
在我引用非.net内置(备选方案)之前 我想知道 内置的C# WebBrowser与WebBrowserBase类,c#,asp.net,browser,webbrowser-control,iwebbrowser2,C#,Asp.net,Browser,Webbrowser Control,Iwebbrowser2,在我引用非.net内置(备选方案)之前 我想知道 内置的.Net类可以提供使用: WebBrowser和WebBrowserBase类 我想知道的是:这两者有什么区别? 正如msdn在后面的一篇文章中所指出的那样——WebBrowserBase- “此API支持.NET Framework基础架构,不打算直接从代码中使用” 问题从一个简单的任务开始:从网站检索文件(数据源xml)。 听起来简单吗?所以你们可以使用任何一种方法,最好是最简单、最节省资源的方法 但是 场景是:同一个源(要可靠,只有一
.Net
类可以提供使用:
WebBrowser
和WebBrowserBase
类
我想知道的是:这两者有什么区别?
正如msdn在后面的一篇文章中所指出的那样——WebBrowserBase-
“此API支持.NET Framework基础架构,不打算直接从代码中使用”
问题从一个简单的任务开始:从网站检索文件(数据源xml)。
听起来简单吗?所以你们可以使用任何一种方法,最好是最简单、最节省资源的方法
但是
场景是:同一个源(要可靠,只有一个)最近通过使用cookie阻止了自动通信,因为我知道WebClient使用的是与您的主浏览器相同的资源(在我的例子中是IE9)
…在我做了一项研究之后,使用WebBrowser“引擎”作为文件检索器
我会把工作做好的
你可以使用任何(不仅仅是微软IE)
关于我进行的其他测试,您可以访问:
+
你的问题
场景是,同一个源(单个源是可靠的)最近通过使用cookie阻止了自动通信`
好吧,如果这是你的问题(cookies),为什么不试试这个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;
}
}
网络浏览器vs网络浏览器数据库
至于WebBrowser和WebBrowserBase之间的区别,WebBrowser继承了WebBrowserBase对其进行扩展,使其成为一个功能齐全的web浏览器。WebBrowserBase的用武之地在于,如果您希望自定义WebBrowser,使其超出所支持的范围—您可以覆盖这些内容,并使用WebBrowserBase来扩展功能等。通常,除非您必须这样做,否则您应该坚持只使用普通的WebBrowser控件——并且只有在您呈现网页或希望使用它来恶意执行javascript时才使用
关于扩展WebBrowser的一般评论
我个人发现的对webbrowser最有用的修改之一是公开下载标志,因此您可以控制webbrowser是否下载图像等。下面是一个很好的示例:请将整个问题改写为两行或三行,因为这是不可读的,并且包含很多不相关的文本和换行符。WebClient/WebRequest到底有什么问题(因为它们支持cookies),WebBrowser有什么问题(为什么要使用基类或其他?@CodeCaster小于此值?问题是如何使用
WebBrowser数据库
,与使用子类型相比,您能从中获得什么好处:WebBrowser
谢谢!!我是否只需要使用:CookieWebClient cwc=new CookieWebClient()
然后cwc.DownloadFile(“www…currency.xml”,“G:\Temp.xml”)
。就这些吗?您的受保护覆盖-GetWebRequest
不被触摸?(因为它已经在webclient
?)上发挥了神奇的作用),所以如果我像上面那样使用类,站点将检查它找不到的cookie?(因为当我使用standart webClient时,它会暴露我的cookie,因此源站点会通过特殊的javascript cookie技巧隐藏xml节点。以上评论中的代码是我应该如何使用你的类的吗?或者你可以…举个例子,你能试着给出一个例子,说明你如何在WebBrowserBase
(选择任何不存在的基本属性或更好的东西,我可以将其作为示例添加到如何创建派生(和现有)中不支持的自定义行为中)WebBrowser
或者您可以只使用WebBrowser
本身并覆盖其一些属性,就像您的示例中使用WebClient时一样,并且仍然不必压缩其原型WebBrowserBase
),否则为什么selinium会提出自己的WebBrowser?我想做一些类似的事情(不是整个产品,只是一个简单的定制插件)如果CookieWebClient
类不起作用,您需要提供更多关于正在发生的事情、网站正在做什么以及为什么它不起作用的信息。当我试图将它与DownloadFile
一起使用时,首先对它进行了评论,尽管我确实不要求保存它,而是需要提取它并使用一个值(其中一个chilednodes),因此您的代码很好!!感谢您的帮助,尽管您的示例(有效!),但我仍然试图向您学习重写类的用法(从而实现您希望的自定义行为)由于WebClient很难理解,您能举个例子说明如何为WebBrowser添加任何功能吗?如果不是与WebBrowser数据库混为一谈,而是与它的子数据库混为一谈,那就不要紧了。