我在帖子请求中发送表单数据,我知道该请求返回cookie,但我的cookie变量返回为空
如您所见,我已经尝试使用 GetCookie,但我想知道我是否可以在收到 200 响应时从我的 PostAsync 响应中过滤出 cookie
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
HttpClient client = new HttpClient(handler);
HttpContent content = new StringContent(JsonConvert.SerializeObject(formVals), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync(targetURI.AbsoluteUri , content);
IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI).Cast<Cookie>()
foreach (Cookie cookie in responseCookies)
result.Add(cookie);
我希望 2 个饼干回来并存储在我的回复中饼干容器
你的问题中有一些不清楚的方面:你的cookies
变量来自哪里,你的handler
变量来自哪里?这些细节对于回答问题很重要。
我可以想到您的代码中可能存在的 2 个错误部分。首先,应将CookieContainer
附加到处理程序:
var cookies = new CookieContainer();
var handler = new HttpClientHandler() { CookieContainer = cookies };
var client = new HttpClient(handler);
var content = new StringContent(JsonConvert.SerializeObject(formVals), Encoding.UTF8, "application/json");
var response = await client.PostAsync(targetURI.AbsoluteUri, content);
IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI).Cast<Cookie>()
foreach (Cookie cookie in responseCookies)
result.Add(cookie);
其次(假设您的cookies
和handler
变量是以这种方式初始化的(,您可能需要获取正确的基址 cookie ( Uri.Host
(:
IEnumerable<Cookie> responseCookies = cookies.GetCookies(targetURI.Host).Cast<Cookie>()
如果您完全不确定,请使用此方法(基于反射的深度检查(检查是否设置了cookie,以及它们设置为哪个域。
只是为了让你们知道,问题是我没有对我的表单数据进行编码。将内容更改为以下行。
var content = new FormUrlEncodedContent(formVals);