簡體   English   中英

HttpConnection維護會話

[英]HttpConnection maintaining Session

我正在使用Rest結構使用Java完成一些Web服務,我的客戶端是使用HttpConnection檢索數據的移動應用程序。 為了控制身份驗證和授權,我使用由@SessionScoped類管理的cookie,但是我不知道如何使會話通過請求持久化。 問題基本上是,我將會話管理器注入了@RequestScoped的其他服務中,但是由於會話沒有持久化,所以我總是為@SessionScoped類檢索不同的實例,從而刪除了我以前擁有的所有cookie或記錄。 查看請求標頭時,我注意到cookie JSESSIONID,我認為它是由tomcat發送的以便持久化會話,因此已經嘗試在下一個請求中發送相同的cookie,但是沒有任何結果。

注釋是正確的...要保留會話,您只需要在下一個請求中將JSESSIONID cookie發送回服務器即可,這種情況下的問題是JavaME中的HttpConnection僅具有setRequestProperty方法以包含標頭值,現在您將相同的值設置為覆蓋上一個值的兩倍。 由於我使用的是自定義cookie和JSessionID cookie,因此我通過以下方式進行設置:

connection.setRequestProperty("Cookie","sessionId="+ApplicationPreferences.getIn‌​stance().getSessionCookieHeader()); 
connection.setRequestProperty("Cookie","JSESSIONID="+ApplicationPreferences‌​.getInstance().getJavaSessionCookieHeader());

正確的方法是連接cookie字符串,然后使用它們全部設置cookie標頭:

String myCookies="sessionId="+ApplicationPreferences.getInstance().getSessionCookieHead‌​er()+";"+"JSESSIONID="+ApplicationPreferences.getInstance().getJavaSessionCookieHeade‌​r(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM