1

好的,问题是我有以下代码:

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

所以resp.CookieContainerandresp.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 容器 bug 修复代码?但它也没有给出有效的结果,因为它应该在系统使用之前被调用,CookieContainer但在那一刻它是空的。

4

1 回答 1

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);
    }
}
于 2012-12-12T16:40:36.733 回答