我使用webbrowser控件打开一个网站,然后将cookie保存在cookieContainer中,之后使用HTTPwebrequest处理转发浏览页面等。
问题出现了,当我进行搜索并返回 100 页时,在第一页上,它保存了一个名为:ABC 的 cookie,我将其添加到 cookiecontainer 并移至下一页,在第二页上再次相同Cookie named: ABC 被赋予了一些值(value),但现在我在 cookiecontainer 中有两个相同的 cookie,当我移动到下一页时它不起作用,因为它使用第一个 cookie 会弄乱一切。
如何解决?
HttpWEBREQUEST 函数:
public string getHtmlCookies(string url)
{
string responseData = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "*/*";
request.AllowAutoRedirect = true;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
request.Timeout = 30000;
request.Method = "GET";
request.CookieContainer = yummycookies;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
foreach (Cookie cookie in response.Cookies)
{
string name = string.Empty;
name = cookie.Name;
string value = cookie.Value;
string path = "/";
string domain = "www.example.com";
yummycookies.Add(new Cookie(name.Trim(), value.Trim(), path, domain));
}
Stream responseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream);
responseData = myStreamReader.ReadToEnd();
}
response.Close();
}
catch (Exception e)
{
responseData = "An error occurred: " + e.Message;
}
return responseData;
}
最佳答案
您可以使用 SetCookies
方法。
var container = new System.Net.CookieContainer();
var uri = new Uri("http://www.example.com");
container.SetCookies(uri,"name=value");
container.SetCookies(uri,"name=value1");
调用 GetCookies(uri)
将提供一个带有 Value=value1
的 cookie。
在你的例子中,代码应该是这样的
var uri = new Uri("http://www.example.com");
yummycookies.SetCookies(uri, response.Headers[HttpResponseHeader.SetCookie]);
关于c# - 如何删除/更新 cookie 容器 c# 中的 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725503/