как использовать куки с HttpWebRequest - PullRequest
25 голосов
/ 04 июня 2010

Я создаю приложение для поиска данных с веб-страницы. Страница защищена паролем, и когда пользователь входит в систему, создается файл 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 создается и должен храниться для будущих запросов).

Ответы [ 2 ]

36 голосов
/ 04 июня 2010
CookieContainer cookieContainer = new CookieContainer();
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest.CookieContainer = cookieContainer;

Затем вы повторно используете этот CookieContainer в последующих запросах:

HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(...);
httpWebRequest2.CookieContainer = cookieContainer;
0 голосов
/ 04 июня 2010

Используйте CookieContainer, или вы можете использовать CookieAwareWebClient

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...