Utilizzare Application.GetCookie per aggiungere cookie a cookieContainer

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

Domanda

Utilizzando WPF ho bisogno di effettuare una chiamata con HtmlAgilityPack.HtmlWeb che necessita di un cookie dalla mia applicazione.

Ho provato il seguente codice, ma sto ricevendo un errore:

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

Ricevo il seguente errore: un'eccezione di tipo "System.Net.CookieException" si è verificata in System.dll ma non è stata gestita nel codice utente

Informazioni aggiuntive: La parte '' Valore '=' visita = "v = 1 & M" ... lang = v = 2 & lang = en-us 'del cookie non è valida.

Risposta accettata

Ecco cosa ha risolto il mio errore:

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

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow