WebRequest 不发送由 CookieCollection 生成的传递的 CookieContainer
WebRequest doesnt send passed CookieContianer that was made from a CookieCollection
我制作了一个服务器来侦听 POST 请求的端口。
它处理 JSON 并反序列化为包含一些字符串和 CookieCollection
的 class
全部正确,但是当我将 CookieCollection 传递给 CookieContainer 并根据请求使用该容器时,它发送时没有 cookie。
Json 示例:
"loginContainer":[
{
"Comment":"",
"CommentUri":null,
"HttpOnly":true,
"Discard":false,
"Domain":"removed",
"Expired":false,
"Expires":"2026-07-02T12:42:43+02:00",
"Name":"locale",
"Path":"/",
"Port":"",
"Secure":false,
"TimeStamp":"2021-07-03T12:42:14.8645637+02:00",
"Value":"removed",
"Version":0
}
收集到 CookieContainer:
CookieContainer loginContainer = new CookieContainer();
foreach (Cookie cookie in root.LoginContainer)
{
Console.WriteLine(cookie.Name + " " + cookie.Value);
loginContainer.Add(cookie);
}
要求:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.CookieContainer = loginContainer;
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (MemoryStream ms = new MemoryStream())
{
response.GetResponseStream().CopyTo(ms);
listLabels.Add(ms.ToArray(), labels.Phrase);
}
通过循环 CookieCollection 并在 CookieContainer 中插入一个具有 CookieCollection 值的新 Cookie 来解决它,而不是来自 CookieCollection 的那个。
foreach (Cookie cookie in root.LoginContainer)
{
loginContainer.Add(new Cookie() { Name = cookie.Name, Value = cookie.Value, Path = cookie.Path, Domain = cookie.Domain });
}
我制作了一个服务器来侦听 POST 请求的端口。 它处理 JSON 并反序列化为包含一些字符串和 CookieCollection
的 class全部正确,但是当我将 CookieCollection 传递给 CookieContainer 并根据请求使用该容器时,它发送时没有 cookie。
Json 示例:
"loginContainer":[
{
"Comment":"",
"CommentUri":null,
"HttpOnly":true,
"Discard":false,
"Domain":"removed",
"Expired":false,
"Expires":"2026-07-02T12:42:43+02:00",
"Name":"locale",
"Path":"/",
"Port":"",
"Secure":false,
"TimeStamp":"2021-07-03T12:42:14.8645637+02:00",
"Value":"removed",
"Version":0
}
收集到 CookieContainer:
CookieContainer loginContainer = new CookieContainer();
foreach (Cookie cookie in root.LoginContainer)
{
Console.WriteLine(cookie.Name + " " + cookie.Value);
loginContainer.Add(cookie);
}
要求:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.CookieContainer = loginContainer;
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
using (MemoryStream ms = new MemoryStream())
{
response.GetResponseStream().CopyTo(ms);
listLabels.Add(ms.ToArray(), labels.Phrase);
}
通过循环 CookieCollection 并在 CookieContainer 中插入一个具有 CookieCollection 值的新 Cookie 来解决它,而不是来自 CookieCollection 的那个。
foreach (Cookie cookie in root.LoginContainer)
{
loginContainer.Add(new Cookie() { Name = cookie.Name, Value = cookie.Value, Path = cookie.Path, Domain = cookie.Domain });
}