C#如何从GeckoWebBrowser控件获取cookie

时间:2013-12-10 03:30:52

标签: c# gecko geckofx

我正在使用GeckoWebBrowser控件来导航URL。 加载该页面时,它实际上应该有cookie。 但是如果我试图获取cookie,即使页面已加载,我也会得到一个空白文本。

GeckoWebBrowser m_Browser = ...

// ...导航后。 string sCookie = m_Browser.Document.Cookie.ToString();

有没有其他方法可以从GeckoWebBrowser获取Cookie? 请帮我。 感谢

2 个答案:

答案 0 :(得分:3)

经验证可与GeckoFX v29.0一起使用。

var uri = new Uri(txtURL.Text);
//often cookies are stored on domain level, so ".google.com", not "www.google.com" (leading dot is important)
string host = uri.Host.Replace("www", ""); 
var cookies = CookieManager.GetCookiesFromHost(host);
string cookiesText = "";
while (cookies.MoveNext())
{
    var c = cookies.Current;
    cookiesText += c.Name + "=" + c.Value + ";";
}

此外,Browser.Document.Cookie似乎更可靠,但我还没有对它进行过广泛的测试。

答案 1 :(得分:0)

我发现了此问题的原因,因为geckowebbrowser的所有元素都正在加载,因此您立即设置了cookie,因此geckowebbrowser没有足够的时间进行授权。 我的解决方案是制作一个按钮。 在onload winform上,您可以浏览所需的URL,然后单击按钮,然后在事件按钮后面为URL设置授权的cookie。它为我工作。 :)