Можно ли сделать так, чтобы элемент управления WebBrowser обменивался файлами cookie с HttpWebRequest? - PullRequest
6 голосов
/ 17 июля 2011

есть ли способ сделать элемент управления WebBrowser в C # .NET и запросы, сделанные HttpWebRequest, общими файлами cookie?

Например, если запрос выполняется программно с помощью HttpWebRequest, а затем HttpWebResponse устанавливает cookie,способ убедиться, что это также установлено в элементе управления WebBrowser?

, а также, если пользователь перемещается с помощью элемента управления WebBrowser и установлен cookie, существует ли способ гарантировать, что CookieContainer для HttpWebRequest также обновляется?

Спасибо за любую помощь!

Ответы [ 2 ]

3 голосов
/ 18 июля 2011

Вам нужно будет синхронизировать файлы cookie вручную с помощью API InternetSetCookieEx / InternetGetCookieEx, и для этого потребуется, чтобы вы знали все URL-адреса всех подзагруженных загрузок, используемых рассматриваемой страницей.

Вам также нужно пройти флаг INTERNET_COOKIE_HTTPONLY, чтобы приложение HTTPONLY увидело файлы cookie.

1 голос
/ 17 июля 2011
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
request.CookieContainer = new CookieContainer();
request.CookieContainer.SetCookies(myUri, webBrowser1.Document.Cookie);

( источник )

И наоборот (я не уверен):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
//request.CookieContainer = new CookieContainer();
request.GetResponse();
webBrowser1.Document.Cookie = request.CookieContainer.GetCookies(myUri);
...