2011-05-12 85 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