Ошибка HTTPWebRequest при настройке CookieContainer - PullRequest
0 голосов
/ 27 февраля 2019

Я использовал расширение RequestToCode Fiddler для воспроизведения POST после входа в Yahoo.

Когда я запускаю код, я вижу в Fiddler, что вход в систему прошел успешно, и в ответе есть 10 файлов cookie.

В моем коде, хотя, response.Cookies имели счетчик 0.

Поэтому я обновил свой HTTPWebRequest и установил:

request.CookieContainer = new CookieContainer();

Когда я снова запускаю код иПосмотрите на это в Fiddler. Я вижу, что вход в систему не выполнен, потому что ответ переходит на URL-адрес неудачного входа в систему.

Моя конечная цель - получить файлы cookie от попытки входа в систему для использования в более позднем запросе Get для Yahoo.

Почему установка контейнера cookie вызывает сбой?

1 Ответ

0 голосов
/ 28 февраля 2019

Возможно, потому что вы инициализируете новый CookieContainer при каждом запросе.Объявите открытую переменную CookieContainer cookies = new CookieContainer();

Теперь ваши новые запросы будут использовать тот же CookieContainer, пример:

    var request = (HttpWebRequest)WebRequest.Create("https://www.yahoo.com/");
    request.CookieContainer = cookies;
    request.Method = "GET";
    request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36";
    request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
    request.Headers.Add("accept-language", "en,hr;q=0.9");
    request.Headers.Add("accept-encoding", "");
    request.Headers.Add("Upgrade-Insecure-Requests", "1");
    WebResponse response = request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    string responseFromServer = reader.ReadToEnd();
    reader.Close();
    response.Close();
...