2011-05-12 86 views
4

嗨, 我问放在这里较早的一个问题,得到了一些精彩的回应。我从那以后一直在做Visual C#,并遇到了一些问题。C# - Cookie管理

在这里,我做了一个简单的页面,设置一个cookie:

http://binarywatch.biz/forms/cookietest.php

如果你去,然后刷新,它会看看是否有一个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 /网络编程,这不是我所需要的。

PS。 WebRequest和HttpWebRequest有什么区别?

我希望这不是太noobish,我有点难倒。

回答

3

根据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(域)需要作为单一的CookieContainer能够安全地存储单独的饼干的多个域。

1

"how to use cookies in httpwebrequest?"

是采取使用的CookieContainer。

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

从这个问题的答案:

“的GetResponse的电话后,该 的CookieContainer将包含来自请求 地址发回的 饼干。”

我没有测试过这个,但它是被接受的答案,所以它必须工作。希望对你有效。

+0

对不起,我0小时的睡眠时间运行。我想让程序获取网页代码和cookie。在下一次请求完全相同的页面时,我想包括网页设置的Cookie(不是Cookie如何工作?),以便“看到”它并为我提供不同的内容。 – 2011-05-12 18:33:33

+0

没问题:)看到我更新的答案。 – 2011-05-12 18:38:52