【问题标题】:C# - Cookie ManagementC# - Cookie 管理
【发布时间】:2020-12-01 08:40:53
【问题描述】:

我早些时候在这里问了一个问题,并得到了一些很棒的回答。从那以后我一直在玩弄 Visual C# 并遇到了一些问题。

Here我做了一个设置cookie的简单页面。

如果你转到它然后刷新,它会查看是否存在 cookie 并更改输出 html。

现在,我希望我的 C# 程序获取一个页面,获取一个 cookie,然后使用设置的 cookie 再次重新访问该页面,以便我的页面向我显示“更新”消息。我通过以下方式完成了第一阶段:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        WebRequest request = WebRequest.Create("http://www.binarywatch.biz/forms/cookietest.php");

        request.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();

        MessageBox.Show(responseFromServer, "Derp");

        reader.Close();
        dataStream.Close();
        response.Close();
    }

所以在这一点上,我有页面 html,但我有点迷失如何获取 cookie(与 CookieContainer() 有什么关系?)然后让页面知道我有它(通过以某种方式将其添加到 httpwebrequest 中?)

我当然试过用谷歌搜索它,但我找到的很多答案都是关于 ASP.NET / Web 编程的,这不是我需要的。

PS。 WebRequest 和 HttpWebRequest 有什么区别?

我希望这不是太无聊,我有点难过。

【问题讨论】:

    标签: c# .net cookies httpwebrequest webrequest


    【解决方案1】:

    根据 MSDN,您首先要创建 CookieContainer 的实例,然后再调用 getResponse。之后,您应该能够从您创建的 CookieContainer 中获取 cookie 数据。

    (request as HttpWebRequest).CookieContainer = new CookieContainer();
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    CookieCollection cookies = (request as HttpWebRequest).CookieContainer.GetCookies("www.binarywatch.biz");
    string myValue cookies["myCookie"].Value
    

    您应该能够重复使用相同的 CookieContainer 对象,以确保服务器不断访问 cookie。

    需要 GetCookies(domain),因为单个 CookieContainer 能够为多个域安全地存储单独的 cookie。

    【讨论】:

      【解决方案2】:

      取自"how to use cookies in httpwebrequest?"

      是的,使用 CookieContainer。

      CookieContainer cookieContainer = new CookieContainer();
      httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
      httpWebRequest.CookieContainer = cookieContainer;
      

      从那个答案:

      "GetResponse 调用后 cookieContainer 将包含 从请求返回的 cookie 网址。”

      我尚未对此进行测试,但这是公认的答案,因此它必须有效。希望它对你有用。

      【讨论】:

      • 抱歉,我的睡眠时间为 0 小时。我希望程序获取网页代码和 cookie。在我对完全相同的页面的下一个请求中,我想包含网页设置的 cookie(这不是 cookie 的工作原理吗?),以便它“看到”它并为我提供不同的内容。
      猜你喜欢
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2018-10-13
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多