据我了解,CookieContainer通过HttpWebRequests持久化cookie的基本用法如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookies = new CookieContainer();
request.CookieContainer = cookies;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
// Do stuff with response
}
then:
request = (HttpWebRequest)WebRequest.Create(new url);
request.CookieContainer = cookies;
etc...
但我很难理解这个过程背后的逻辑。变量 cookies 在初始化后似乎没有在任何地方重新分配。第一个 WebResponse 中的 cookie 到底如何携带到第二个 WebRequest 中?
这是因为当您从网站检索响应时,它会自动填充您用于请求的 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)