5

私が理解していることから、HttpWebRequests を介して Cookie を永続化するための CookieContainer の基本的な使用法は次のとおりです。

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

それから:

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

しかし、このプロセスの背後にあるロジックを理解するのに苦労しています。変数 cookies は、初期化後にどこにも再割り当てされていないようです。最初の WebResponse からの Cookie は、2 番目の WebRequest にどの程度正確に反映されますか?

4

1 に答える 1

7

これは、Web サイトから応答を取得するときに、要求に使用した Cookie コンテナーが自動的に読み込まれるためです。応答の前後にどの Cookie が存在するかを確認することで、これをテストできます。

//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();
于 2012-08-19T06:39:49.720 に答える