我需要登錄到網站並執行操作。該網站是基於REST的,所以我可以做這個很容易登錄(登錄信息是作爲在URL查詢字符串,所以我dont't需要設置憑證):C#通過客戶端上的HTTPS維護會話
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest firstRequest = (HttpWebRequest) WebRequest.Create(loginUrl);
firstRequest.CookieContainer = cookieJar;
firstRequest.KeepAlive = true;
firstRequest.Method = "POST";
HttpWebResponse firstResponse = (HttpWebResponse)firstRequest.GetResponse();
這一工程,並記錄了我我得到一個cookie來維護會話,它存儲在上面顯示的cookieJar中。然後我做了如下第二個請求:
HttpWebRequest secondRequest = (HttpWebRequest) WebRequest.Create(actionUrl);
secondRequest.Method = "POST";
secondRequest.KeepAlive = true;
secondRequest.CookieContainer = cookieJar;
WebResponse secondResponse = secondRequest.GetResponse();
我確保將cookie分配給新的請求。但由於某種原因,這似乎不起作用。我收到一個錯誤,告訴我「我的會話超時或過期」,並且這是一個接一個地完成的,所以它不是時間問題。
我使用提琴手檢查HTTP標頭,但我發現,因爲這很難是HTTPS。 (我知道我可以解密它,但似乎不工作。)
我可以把我的網址的這個休息服務,並將它們粘貼到Firefox中,它一切正常,所以它必須是我在做的事情錯誤而不是連接的另一端。
我對HTTPS不是很熟悉。我需要做其他事情來維持我的會話嗎?我認爲cookie就是這樣,但也許在這兩個請求中我需要維護其他內容?
下面是當我在第一個請求發送的標頭中返回(除非我改變,以保護無辜的餅乾!):
X-DB-Content-length=19
Keep-Alive=timeout=15, max=50
Connection=Keep-Alive
Transfer-Encoding=chunked
Content-Type=text/html; charset=WINDOWS-1252
Date=Mon, 16 Nov 2009 15:26:34 GMT
Set-Cookie:MyCookie stuff goes here
Server=Oracle-Application-Server-10g
任何幫助,將不勝感激,我跑出來的想法。
微軟似乎已經在.NET 4中修復了這個問題。 – Kelly 2010-06-28 22:02:41
您好凱利,我也面臨一些會話過期,可能與您的情況類似,請您看看這個鏈接:http://stackoverflow.com/問題/ 22957840/crawling-session-expired謝謝 – bluewonder 2014-04-09 09:19:20