Подтвердить что ты не робот

Настройка файла cookie в элементе управления WebBrowser

Я загружаю веб-сайт с помощью функции WebBrowser Navigate, и я хочу, чтобы браузер загружал страницу с файлом cookie, который я ему дал.

Следующий код не работает:

wb.Navigate(url, null, null, "Cookie: " + cookie + "\n");

Что я делаю неправильно? Должен ли я использовать InternetSetCookie? Это не похоже на лучшее решение.

4b9b3361

Ответ 1

Похоже, что есть лучший способ:

Импортируйте функцию InternetSetCookie:

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);

Создайте объект Cookie:

Cookie temp1 = new Cookie("KEY1", "VALUE1", "/Path/To/My/App", "/");

Вызвать InternetSetCookie функцию для настройки файла cookie для этого URL

InternetSetCookie("https://my.url.com/Path/To/My/App", null, temp1.ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT");

Navigate WebBrowser к URL-адресу, к которому вы хотите перейти.

webBrowser1.Navigate("https://my.url.com/Path/To/My/App");

Подумайте, это лучшее решение проблемы:).

Ответ 2

Правильный способ использования InternetSetCookieEx.

[DllImport("wininet.dll")]
static extern InternetCookieState InternetSetCookieEx(
    string lpszURL,
    string lpszCookieName,
    string lpszCookieData,
    int dwFlags,
    int dwReserved);

enum InternetCookieState : int
{
    COOKIE_STATE_UNKNOWN = 0x0,
    COOKIE_STATE_ACCEPT = 0x1,
    COOKIE_STATE_PROMPT = 0x2,
    COOKIE_STATE_LEASH = 0x3,
    COOKIE_STATE_DOWNGRADE = 0x4,
    COOKIE_STATE_REJECT = 0x5,
    COOKIE_STATE_MAX = COOKIE_STATE_REJECT
} 

Здесь приведен код для проверки его на веб-сайте в котором отображаются ваши HTTP-заголовки.

InternetSetCookieEx("http://request.urih.com/", null, "TestData=Test;", 0, 0);
webBrowser1.Navigate("http://request.urih.com/");