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