Используйте Application.GetCookie для добавления cookie в cookieContainer

c# cookies html-agility-pack webbrowser-control wpf

Вопрос

Используя WPF мне нужно сделать вызов с помощью HtmlAgilityPack.HtmlWeb, для которого требуется cookie из моего приложения.

Я попробовал следующий код, но я получаю сообщение об ошибке:

HtmlWeb web = new HtmlWeb();
web.PreRequest += request =>
{
   CookieContainer cookieContainer = new CookieContainer();
   cookieContainer.Add(new Cookie("name",Application.GetCookie(uri)){Domain = uri.Host});
   request.CookieContainer = cookieContainer;
    return true;
};

Я получаю следующую ошибку: исключение типа «System.Net.CookieException» произошло в System.dll, но не было обработано в коде пользователя

Дополнительная информация: Недопустимая часть файла cookie 'Value' = 'visit = "v = 1 & M" ... lang = v = 2 & lang = en-us ".

Принятый ответ

Вот что решило мою ошибку:

web.PreRequest += request =>
{
    CookieContainer cookieContainer = new CookieContainer();
    string str = Application.GetCookie(uri);
    foreach (string s in str.Split(';'))
    {
        int charIndex = s.IndexOf('=');
        string a = s.Substring(0, charIndex).Trim();
        string b = s.Substring(charIndex+1, s.Length - charIndex-1);
        cookieContainer.Add(new Cookie(a,b) { Domain = uri.Host });
    }
    request.CookieContainer = cookieContainer;
    return true;
};


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow