Контейнер Cookie не связан с заголовком ответа Set-Cookie - PullRequest
1 голос
/ 17 декабря 2011

ОК, ребята, проблема в том, что у меня есть следующий код:

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

Итак, resp.CookieContainer и resp.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, перечисленные выше?

Спасибо, ребята!


ОБНОВЛЕНИЕ

Я также попробовал код исправления ошибки контейнера cookie, указанный в вопросе Ошибка CookieContainer? , но он также не дает действительного результата, потому что его следует вызывать до того, как система использует CookieContainer, но при этом он пуст.момент.

1 Ответ

2 голосов
/ 12 декабря 2012

Чтобы решить эту проблему, вы должны инициализировать свойство 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);
    }
}
...