请参阅以下代码:
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
int cookieCount = cookieJar.Count;
Run Code Online (Sandbox Code Playgroud)
我如何在里面获取cookie信息cookieJar?(所有这些,不只是针对特定域.)
我如何添加或删除cookie?
我想清除 CookieContainer 中收到的所有 cookie,而无需初始化新的 CookieContainer、HttpClientHandler 和 HttpClient。有办法吗?我已经检查过MSDN,但似乎我只能使用 GetCookies(Uri) 来获取与特定 Uri 关联的所有 cookie。
var cc = new CookieContainer();
var handler = new HttpClientHandler
{
CookieContainer = cc
};
var client = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud) 鉴于,CookieContainer的实例不是线程安全的.
此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的.
所以事实证明,如果没有同步,我不能在多个并发HTTP请求中使用相同的容器.不幸的是,MSDN的文档不清楚如何正确地同步它.
解决方案是为每个请求使用主容器的副本,一旦请求完成,副本中的cookie可以合并回主容器.创建副本和合并可以以同步方式完成.
所以问题是:如何复制CookieContainer类的实例?