Cookie容器不与Set-Cookie响应标头绑定

时间:2011-12-17 16:54:53

标签: c# .net cookies webclient cookiecontainer

好的家伙所以问题是我有以下代码:

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"]包含相应的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,我会出错?

谢谢,伙计们!


更新

我还尝试了问题CookieContainer bug?中列出的cookie容器错误修复代码,但它也没有提供有效的结果,因为它应该在系统使用CookieContainer之前调用,但在那时它是空的。

1 个答案:

答案 0 :(得分: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);
    }
}