Я использую HttpWebRequest для программного запроса веб-страницы. Требуется выполнить два запроса. При осуществлении первого запроса сервер создает куки, которые нужно использовать во время второго запроса. Как реализовать сохранение cookies между запросами?
Как использовать куки (Cookies) при запросе с помощью HttpWebRequest?
1
Спросил
Новые ответы
2
Делает запрос на сайт, получает куки. Делает на тот же сайт запрос (второй раз) с полученными ранее куками и получает новые куки.
HttpWebRequest h1 = (HttpWebRequest) WebRequest.Create("http://site.ru");
h1.AllowAutoRedirect = false;
CookieContainer cc = new CookieContainer();
h1.CookieContainer = cc;
HttpWebResponse r1 = (HttpWebResponse)h1.GetResponse();
foreach (Cookie c in r1.Cookies)
{
textBox1.Text += "\r\n cook1:" + c;
cc.Add(c);
}
HttpWebRequest h2 = (HttpWebRequest)WebRequest.Create("http://site.ru");
h2.AllowAutoRedirect = false;
h2.CookieContainer = cc;
HttpWebResponse r2 = (HttpWebResponse)h2.GetResponse();
foreach (Cookie c in r2.Cookies)
textBox1.Text += "\r\n cook2:" + c;
Естественно создавать второй request не обязательно
CookieContainer cookies = new CookieContainer();
HttpWebRequest postRequest = (HttpWebRequest)WebRequest.Create(site);
postRequest.CookieContainer = cookies; // note this
postRequest.Method = "POST";
postRequest.ContentType = "application/x-www-form-urlencoded";
using (Stream stream = postRequest.GetRequestStream())
{
stream.Write(buffer, 0, buffer.Length);
}
Сделал как в примере, вот код:
Но в куках всегда пусто, почему?