c# - 如何删除/更新 cookie 容器 c# 中的 cookie?

标签 c# visual-studio-2010 cookies httpwebrequest httpwebresponse

我使用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/

相关文章:

python - 如何在 python 中使用 cookielib 和 httplib "keep-alive"?

jquery - 设置 cookie 来记住 Accordion 状态

c# - Dispose 一个对象被添加到集合中,但集合仍然引用它

c# - 如何以编程方式更新嵌入式 SQL 连接的命令属性

c# - 如何在 Visual Studio 2010 中引用 C# 类库项目?

javascript - 重定向后跨域 Cookie 未发送到应用程序

c# - Monotouch (Xamarin.iOS) 内存泄漏

c# - WPF多级绑定(bind)线程问题

c++ - 在C++ v6和VS2010 C++缓冲区问题中编译WAVE声音

c# - 填充 xaml 矩形倍数 solidcolorbrush