我正在使用WebBrowser控件登录页面并检索响应在Windows控制台应用程序(C#)中设置的cookie。
签约进展顺利。我可以在Fiddle中看到登录成功,并且已设置。但是当我尝试从WebBrowser控件获取cookie时,代码 webbroser.Document.Cookie 返回 null 。
这是代码
public void runBrowserThread(Uri url)
{
var th = new Thread(() =>
{
var br = new WebBrowser();
br.DocumentCompleted += browser_DocumentCompleted;
br.Navigate(url);
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var br = sender as WebBrowser;
if (!dataInputPassed)
{
Console.WriteLine(br.Document.Body.InnerHtml);
br.Document.GetElementById("UserName").SetAttribute("value", "user");
br.Document.GetElementById("Password").SetAttribute("value", "pass");
br.Document.Forms[0].InvokeMember("submit");
dataInputPassed = true;
}
if (e.Url.ToString().Contains("Osiguruvanje") && br.Document.Cookie != null)
{
Console.WriteLine(br.Document.Body.InnerHtml);
}
}
为什么会这样?有没有办法获取控件的内部WebRequest并从那里检索cookie? 请记住,我正在登录的页面,通过调用javascript表单子目录进行多次重定向,其中一个重定向,因此使用WebRequest类不会有太大帮助。