在HttpWebRequest中提交请求后无法执行此操作

Anu*_*til 2 c# httpwebrequest asp.net-core

我在以下代码上遇到错误。

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();
Run Code Online (Sandbox Code Playgroud)

错误:System.InvalidOperationException:提交请求后无法执行此操作。在System.Net.HttpWebRequest.GetResponse()

上面的代码有什么问题?

Nko*_*osi 6

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();
    //...
}
Run Code Online (Sandbox Code Playgroud)

您可以将Cookie容器重用于后续请求,因为它们会被响应添加