Use Application.GetCookie para agregar una cookie a cookieContainer

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

Pregunta

Utilizando WPF necesito hacer una llamada con HtmlAgilityPack.HtmlWeb que necesita una cookie de mi aplicación.

Probé el siguiente código pero recibo un error:

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;
};

Recibo el siguiente error: una excepción del tipo 'System.Net.CookieException' ocurrió en System.dll pero no se manejó en el código de usuario

Información adicional: El 'Valor' = 'visit = "v = 1 & M" ... lang = v = 2 & lang = en-us' parte de la cookie no es válida.

Respuesta aceptada

Esto es lo que resolvió mi error:

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;
};


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué