Как использовать файлы cookie с HttpWebRequest
Я создаю приложение для поиска данных с веб-страницы. Страница защищена паролем и при входе пользователя в файл cookie.
Чтобы получить данные, сначала необходимо войти в систему: сделать веб-запрос с именем пользователя и паролем и сохранить файл cookie. Затем, когда файл cookie сохраняется, он должен быть добавлен в заголовки всех запросов.
Вот метод, который делает запросы и извлекает содержимое:
public void getAsyncDailyPDPContextActivationDeactivation()
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation);
IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);
asyncResult.AsyncWaitHandle.WaitOne();
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string responseText = responseStreamReader.ReadToEnd();
}
}
Кто-нибудь знает, как изменить этот метод, чтобы добавить файл cookie в заголовок?
Я был бы также благодарен, если бы кто-нибудь предложил способ сохранить cookie из ответа (когда приложение делает запрос http: xxx.xxx.xxx/login? Username = xxx & password = xxx, cookie создан и должен храниться для будущих запросов).
Ответы
Ответ 1
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest.CookieContainer = cookieContainer;
Затем вы повторно используете этот CookieContainer в последующих запросах:
HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest2.CookieContainer = cookieContainer;
Ответ 2
Используйте CookieContainer
, или вы можете использовать CookieAwareWebClient