2012-04-19 32 views
0

我的問題是如果這是在c#中獲取cookie值的正確方法。我的意圖只是獲取特定cookie的值,並將其存儲在一個字符串變量中,我在該示例中將其命名爲「cookie」。Cookie值c#

WebRequest request = WebRequest.Create(url); 
(request as HttpWebRequest).CookieContainer = new CookieContainer(); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
String cookie = response.Cookies[cookiename].ToString(); 
+0

這段代碼注意工作嗎? – payo 2012-04-19 17:31:49

+0

你試過了嗎? – Msonic 2012-04-19 17:31:57

+0

等待進入生產,所以我可以嘗試它,但我也看到在例子中,而不是response.Cookies [cookiename]人使用request.Cookies [cookiename],這兩者之間有什麼區別? – rdk1992 2012-04-19 17:32:52

回答

1

看:

保存Cookie:

if (Request.Cookies["cookieName"] == null) 
      Response.Cookies.Add(new HttpCookie("cookieName")); 

     Response.Cookies["cookieName"].Expires.AddYears(5); 
     Response.Cookies["cookieName"]["keyValue"] = "string value"; 
     Response.AppendCookie(Response.Cookies["cookieName"]); 

恢復餅乾:

HttpCookie CookieKey = Request.Cookies["cookieName"]; 
     if (CookieKey != null) 
     { 
      string value = CookieKey["keyValue"]; 
     } 

希望這有助於。

+0

謝謝!我早些時候嘗試過恢復部分,它表示沒有請求聲明範圍內,所以我做了請求對象。這會好嗎? btw什麼是「keyvalue」和「cookiename」之間的區別還是他們是一樣的? WebRequest請求= WebRequest.Create(url); HttpCookie CookieKey = Request.Cookies [「cookieName」]; if(CookieKey!= null) { string value = CookieKey [「keyValue」]; } – rdk1992 2012-04-19 17:41:53

+0

Hi @ rdk1992,一個cookie可以有多個值。所以使用這個:Response.Cookies [「cookieName」] [「name」] =「name」; Response.Cookies [「cookieName」] [「age」] =「age」; – Gus 2012-04-19 17:52:30

+0

我的意思是在下半部分,恢復cookie的一部分:我不是說要創建一個cookie來獲得一個值。所以我以你的恢復cookie部分爲例來指導自己。問題是你有Request.Cookies,試過這個,並且給我錯誤,那個請求沒有被聲明。所以我的問題是,如果請求對象應該這樣聲明:「WebRequest request = WebRequest.Create(url);」 – rdk1992 2012-04-19 18:02:37

0

除了錯誤檢查(超時,異常) - 用域名的cookie支持與

string cookie = response.Cookies[cookiename].ToString(); 

所以, 「是」 就是回答你的問題:)

0

Request.Cookies用於對服務器上的請求作出反應 - 如果在服務器上時不存在,則Response.Cookies將創建一個cookie--因爲這超出了服務器執行代碼的上下文範圍,所以這是適當的。