C# - Cookie 管理

标签 c# .net cookies httpwebrequest webrequest

我早些时候在这里问了一个问题,得到了一些很好的回答。从那以后,我一直在使用 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 编程的,而这不是我需要的。

附言。 WebRequest 和 HttpWebRequest 有什么区别?

我希望这不是太菜鸟,我有点难过。

最佳答案

根据 MSDN,您首先会在调用 getResponse 之前创建 CookieContainer 的实例。之后,您应该能够从您创建的 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。

关于C# - Cookie 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982417/

相关文章:

c# - 如何使用 C# 从 word 文档中的表中读取值

c# - 如何设计通用搜索条件?

.net - 我如何在C#中设置cookie过期时间

javascript - Adobe Target PCID 在 Chrome 隐身模式下设置,但在正常模式下丢失

python - 在 Python 中通过重定向获取 session ID

c# - 为什么 CanRead 和 CanWrite 在 C# 中为具有覆盖访问器的属性返回 false?

c# - 如何为 SQL CLR 存储过程提供 sql_variant 参数?

php - 发送 header 后设置 cookie。为什么它有效?不应该

c# - 从方法返回 boolean 值

.net - 将 blob 存储在 SQL Server 中而不将 blob 读入内存