Я создаю приложение для поиска данных от веб-страницы. Страница защищена паролем и когда пользователь входит в систему, 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 создается и должен быть сохранен для будущих запросов).
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest.CookieContainer = cookieContainer;
Затем вы повторно используете этот CookieContainer в последующих запросах:
HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest2.CookieContainer = cookieContainer;
Используйте CookieContainer
или CookieAwareWebClient