有没有一种方法读写的饼干这个的网页浏览器控制用途?

我做这样的事情...

string resultHtml;
HttpWebRequest request = CreateMyHttpWebRequest(); // fills http headers and stuff
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
    resultHtml = sr.ReadToEnd();
}
WebBrowser browser = new WebBrowser();
browser.CookieContainer = request.CookieContainer; // i wish i could do this :(
browser.NavigateToString(resultHtml);  
有帮助吗?

解决方案

web浏览器控件使用的WinInet用于联网,专门使用InternetSetCookie(实施例)和InternetGetCookie(实施例)功能的Cookie管理。没有一个WinInet的包装在.NET中,但可以对调用。

其他提示

一个关于WebBrowser控制和饼干的潜在混乱的事情是,乍一看,它通常的外观的喜欢你的应用程序获得一个单独的cookie存储。例如,如果您登录到一个网站,存储持久cookie识别您的身份,那么你是否会出现在中记录从主机控制将是独立的,你是否似乎是在通过IE浏览器登录一个应用程序内部的网站

在实际上,可以甚至可以与不同的身份登录

不过,虽然这可能是自然地得出结论,每个应用程序托管WebBrowser因此得到它自己的cookies,其实这是不正确的。这里仅仅是两套饼干:在“低诚信”模式所使用的那些(这是IE浏览器默认情况下运行),而另一组,这是什么,你会在一个正常的应用程序获取主机WebBrowser也如果你运行IE升高,你会得到什么。

是的,你说得对,InternetGetCookieEx是检索的HttpOnly饼干的唯一途径,它是从WebBrowser控件抢饼干的首选方式。

我贴完整的例子此处

你可以使用 应用程序。GetCookie应用程序。SetCookie 方法。

虽然应用程序或多或少相关WPF,可以使用这些方法中任何的桌面上。净码。事实上,它们是包装纸上 InternetGetCookieExInternetSetCookieEx Windows Api。

我面临着同样的问题,前几天。 除上述答案的例子,这里是一个Win32包装WebBrowser控件。这种实现的优点是,它暴露更多选项的默认web浏览器控件。

不幸的是,如果这不是WPF本地人,所以你必须创建一个包装,如果你打算在WPF中使用它。

http://code.google.com/p/csexwb2/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top