5 votes

Confusion CookieContainer

D'après ce que je comprends, l'utilisation de base du CookieContainer pour faire persister les cookies par le biais des HttpWebRequests est la suivante :

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookies = new CookieContainer();
request.CookieContainer = cookies;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
  // Do stuff with response
}

alors :

request = (HttpWebRequest)WebRequest.Create(new url);
request.CookieContainer = cookies;
etc...

Mais j'ai du mal à comprendre la logique de ce processus. La variable cookies ne semble pas avoir été réaffectée après son initialisation. Comment exactement les cookies de la première WebResponse sont-ils transférés dans la deuxième WebRequest ?

7voto

Ichabod Clay Points 1901

En effet, lorsque vous récupérez la réponse du site Web, le conteneur du cookie que vous avez utilisé pour la demande est automatiquement rempli. Vous pouvez tester cela en voyant quels cookies sont présents avant et après la réponse :

//Build the request
Uri site = new Uri("http://www.google.com");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(site);
CookieContainer cookies = new CookieContainer();
request.CookieContainer = cookies;

//Print out the number of cookies before the response (of course it will be blank)
Console.WriteLine(cookies.GetCookieHeader(site));

//Get the response and print out the cookies again
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    Console.WriteLine(cookies.GetCookieHeader(site));
}

Console.ReadKey();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X