在 HttpWebRequest 中提交请求后无法执行此操作
This operation cannot be performed after the request has been submitted in HttpWebRequest
我在以下代码中遇到错误。
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();
Error : System.InvalidOperationException: This operation cannot be performed after the request has been submitted.
at System.Net.HttpWebRequest.GetResponse()
上面的代码有什么问题?
HttpWebResponse.Cookies Property 应该已经包含与响应关联的 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 容器,因为它们将由响应添加
我在以下代码中遇到错误。
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();
Error : System.InvalidOperationException: This operation cannot be performed after the request has been submitted. at System.Net.HttpWebRequest.GetResponse()
上面的代码有什么问题?
HttpWebResponse.Cookies Property 应该已经包含与响应关联的 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 容器,因为它们将由响应添加