Эта операция не может быть выполнена после того, как запрос был отправлен в HttpWebRequest - PullRequest
0 голосов
/ 05 сентября 2018

Я получаю сообщение об ошибке ниже кода.

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.CookieContainer = cookies;
StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
response.Cookies = webRequest.CookieContainer.GetCookies(webRequest.RequestUri); //Error here
string responseData = responseReader.ReadToEnd();
responseReader.Close();

Ошибка: System.InvalidOperationException: эту операцию невозможно выполнить после отправки запроса. в System.Net.HttpWebRequest.GetResponse ()

Что не так с кодом выше?

1 Ответ

0 голосов
/ 05 сентября 2018

Свойство HttpWebResponse.Cookies уже должно содержать файлы cookie, связанные с ответом.

Вам также следует избегать звонков GetResponse несколько раз.

var cookies = new CookieContainer();

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.CookieContainer = cookies;

var response = (HttpWebResponse)webRequest.GetResponse();

using (var responseReader = new StreamReader(response.GetResponseStream())) {
    var responseCookies = response.Cookies;
    string responseData = responseReader.ReadToEnd();
    //...
}

Вы можете повторно использовать контейнер cookie для последующих запросов, так как они были бы добавлены в ответе

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