2012-07-17 27 views
3

我在使用HttpWebRequest時處理cookies存在問題。response.Cookies總是空的(長度:0)

我正在製作一個程序在小型社區網站上管理我的帳戶。 我能夠使get和post請求(成功登錄,等),但我不能保持會話cookie中保持登錄

我的代碼如下所示:

this.cookies = new CookieCollection(); 
request = (HttpWebRequest)WebRequest.Create(requestURL); 
request.CookieContainer = new CookieContainer(); 
... 
request.CookieContainer.Add(cookies); 
ASCIIEncoding encodage = new System.Text.ASCIIEncoding(); 
byte[] data = encodage.GetBytes(Post); 
request.AllowAutoRedirect = true; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.UserAgent = "whatever"; 
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
request.Method = "POST"; 
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch"); 
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
request.AllowWriteStreamBuffering = true; 
request.ContentLength = data.Length; 
newStream = request.GetRequestStream(); 
request.ProtocolVersion = HttpVersion.Version11; 
newStream.Write(data, 0, data.Length); 
... 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
this.cookies = response.Cookies; 
... 

響應.Cookies總是空的(長度:0),它不應該。 任何人都可以告訴我做錯了什麼?爲什麼沒有與響應相關的Cookie? 在此先感謝

+0

你實際上是在某些時候向那個'CookieCollection'添加cookie嗎? – bhamlin 2012-07-17 16:45:57

+0

是的,我用前面的請求覆蓋cookiecollection。問題是我在收到請求時沒有收到來自服務器的cookies – user1532339 2012-07-17 16:57:19

回答

4

只需從Request.Cookies集合中讀取即可。 Response.Cookies中只有在服務器端添加的新cookie可用。 Request.Cookies包含所有(Request + Response)Cookies。

考慮到上述情況,似乎服務器沒有添加其他cookie,這就是爲什麼您在響應中沒有收到cookie的原因。那有意義嗎 ?

+1

對我來說,這是完全有道理的。它的工作,非常感謝 – user1532339 2012-07-17 17:08:55