2011-12-17 76 views
1

OK小伙子,所以问题是,我有下面的代码:Cookie的集装箱不设置Cookie响应头部约束

HttpWebRequest req; 
HttpWebResponse resp; 
// go to the site 
req = NetLogHttpWebRequestFactory.Create("http://www.facebook.com/");    
resp = (HttpWebResponse)req.GetResponse(); 

所以resp.CookieContainerresp.Cookies是空的,但resp.Headers["set-cookie"]包含相应的饼干:

datr=oMjsTlmv7Z1aIDOEVnIA11tQ; expires=Mon, 16-Dec-2013 16:51:44 GMT; path=/; domain=.facebook.com; httponly,reg_fb_gate=http%3A%2F%2Fwww.facebook.com%2F; path=/; domain=.facebook.com,reg_fb_ref=http%3A%2F%2Fwww.facebook.com%2F; path=/; domain=.facebook.com 

如果我认为resp.CookieContainer应该包含上面列出的适当cookie,那么错了?

谢谢,伙计们!


UPDATE

我也试过问题CookieContainer bug?列出的cookie的容器bug修复代码,但它也是系统采用CookieContainer之前不会给出一个有效的结果bwcause它应该叫,但在它的空那一刻。

回答

2

为了解决这个问题,你必须初始化请求对象的CookieContainer属性

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
request.CookieContainer = new CookieContainer(); 

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    foreach (Cookie cookie in response.Cookies) 
    { 
     Console.WriteLine(cookie.Name + " = " + cookie.Value); 
    } 
}