c# - HttpWebRequest: Agregar cookie a CookieContainer-> ArgumentException(Parametername: cookie.Domain)
cookies (1)
CookieContainer
puede contener varias cookies para diferentes sitios web, por lo tanto, se debe proporcionar una etiqueta (el Dominio) para vincular cada cookie a cada sitio web. El dominio se puede establecer al crear instancias de las cookies individuales de esta manera:
Cookie chocolateChip = new Cookie("CookieName", "CookieValue") { Domain = "DomainName" };
Una forma fácil de obtener el dominio es crear un Uri
(si no está usando uno) que contiene su url objetivo y establecer el dominio de la cookie con la propiedad Uri.Host
.
CookieContainer gaCookies = new CookieContainer();
Uri target = new Uri("http://www.google.com/");
gaCookies.Add(new Cookie("__utmc", "#########") { Domain = target.Host });
Intento iniciar sesión en un sitio web a través de mi aplicación. Lo que hice:
Primero descubrí cómo el navegador realiza el proceso de autorización con Fiddler. Examiné cómo se construyó la solicitud POST e intenté reconstruirla. El navegador envía 4 cookies (Google Analytics) y traté de configurarlas:
CookieContainer gaCookies = new CookieContainer();
gaCookies.Add(new Cookie("__utma", "#########.###########.##########.##########.##########.#"));
gaCookies.Add(new Cookie("__utmb", "#########.#.##.##########"));
gaCookies.Add(new Cookie("__utmc", "#########"));
gaCookies.Add(new Cookie("__utmz", "#########.##########.#.#.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"));
(acaba de reemplazar la información original de la cookie con #)
Luego revisé el código con el depurador y tan pronto como se ejecuta el primer archivo gaCookies.Add, la aplicación se detiene con un
System.ArgumentException: The parameter ''{0}'' cannot be an empty string. Parameter name: cookie.Domain
Me gustaría saber por qué sucede esto. El constructor de Cookie no requiere un dominio y no sé dónde puedo obtener este valor.
Sería genial si alguien de ustedes pudiera ayudarme con esto.
No soy desarrollador web ni soy un experto en material web, así que no sé mucho al respecto.
¿Hay alguna buena fuente en la que pueda aprender sobre esto si no hay una "respuesta corta y rápida"?