我想創建一個ASP.NET網站的HttpWebRequest/HttpWebResponse會話,以便稍後通過url參數解析HTML表單(這部分我知道怎麼做),但我不明白如何解析和設置cookie,如會話ID。在Fiddler中,它顯示ASP.NET會話ID是通過Set-Cookie在對URL的/路徑的請求的響應中返回的,但是如何解壓縮此會話ID並將其設置爲下一個HttpWebRequest的Cookie ?我知道這個Set-Cookie頭可以在HttpWebResponse.Headers.Keys中找到,但是有沒有解析它的直接路徑?謝謝!如何解析HttpWebResponse.Headers.Keys的Set-Cookie會話ID返回
回答
.NET框架將爲您管理cookie。您不必關心解析標頭中的Cookie信息或將Cookie標頭添加到您的請求中。
要存儲和發送您的會話ID,請使用Cookie
和CookieContainer
類來存儲它們,然後確保您發送每個請求的Cookie。
以下示例顯示如何執行此操作。 CookieContainer,'cookieJar
'可以跨多個域和請求共享。一旦將它添加到請求對象中,在返回響應時,對它的引用也將被添加到響應對象中。
CookieContainer cookieJar = new CookieContainer();
var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;
var response = request.GetResponse();
foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}
這段代碼的輸出將是:
Cookie['PREF']: ID=59e9a22a8cac2435:TM=1246226400:LM=1246226400:S=tvWTnbBhK4N7Tlpu
非常感謝你!這真的會幫助我!好極了! :) – 2009-06-28 22:49:14
我實現了這一點,它的工作原理!非常感謝。 – 2009-06-29 22:25:43
+1非常感謝幫助!我並不期待手動解析HTTP標頭:) – jv42 2011-09-29 09:45:39
從丹·赫伯特的回答讓我真的。我感謝您的幫助。
只是想發佈我的用法 - 希望它在某個時間點幫助某人。我的要求是我需要從第一個http post post發送cookies到第二個http post請求。
1:
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....
CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);
第二:
CookieContainer cc = new CookieContainer();
cc.Add(setCookies);
request.CookieContainer = cc;
哼我可能是錯的,但是從我所從第一反應觀察最近
餅乾,不包括'在302(重定向)狀態的情況下,將cookie設置爲標頭中出現的cookie(例如某些會話ID ...)
如果autofollowredirect設置爲true,則設置的cookie將被處理,並且隨後的請求會自動完成,將包含由第一次調用時由set cookie定義的cookie
如果autofollowredirect設置爲false,則第一個請求沒有得到由設置的cookie定位的cookie,我猜這也是我的queston,如果有人知道,那麼隨後在下一個請求中擁有這些cookie的唯一方法是解析設置的cookie?
我有同樣的問題(亞馬遜) 我用下面的正則表達式:
string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}
請注意,我只關心cookie的名稱/值...
好運 埃利亞
- 1. 獲取解析會話ID
- 2. cakePHP「會話」沒有返回會話ID
- 3. PHP setcookie返回null
- 4. 解析新用戶保存不會返回新的ID
- 5. 返回上一個會話ID
- 6. NSURLConnection返回多個php會話ID
- 7. 會話ID不在Asp.net中返回
- 8. 如何實現返回會話ID的WebApi方法?
- 9. xmlparser解析不會總是返回,如何解決?
- 10. 如何從http服務器返回會話ID
- 11. 如何從asmx解析返回的值
- 12. 如何解析由Foursquare返回的JSON
- 13. 如何解析此JSON返回該委員會的名稱
- 14. 解析HTML tr會返回空列表
- 15. 返回一個HTML表格元素的ID,並解析ID
- 16. 會話返回null
- 17. Parse.com:如何返回會話令牌?
- 18. 會話返回null無論如何
- 19. 解析SOAP返回
- 20. 如何解析返回JSON對象
- 21. XML解析/解組返回任何
- 22. 如何更改會話ID?
- 23. iOS的用戶解析查詢不會返回任何內容
- 24. 的Tomcat 7.0.40返回相同的會話ID無效
- 25. NHibernate的返回ID會話之外,而不是通過屬性
- 26. PHP會話ID通過AJAX返回的變量
- 27. WAP Web Service從網站返回不同的會話ID
- 28. 獲取用戶ID並解析到會話變量C#
- 29. 解析由imaplib返回的Message-ID頭文件
- 30. SOCI會話SQL返回值
不客氣! – 2009-06-30 00:40:56