首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpConnection维护会话

HttpConnection维护会话
EN

Stack Overflow用户
提问于 2012-02-04 00:26:25
回答 1查看 2.8K关注 0票数 0

我正在使用使用Rest架构的java完成的一些web服务,我的客户这是一个使用HttpConnection检索数据的移动应用程序。为了控制身份验证和授权,我使用cookie,由@SessionScoped类管理,但是我不知道如何通过请求保持会话。基本上,问题是我将会话管理器注入到@RequestScoped的其他服务中,然而,由于会话不是持久的,所以我总是检索@SessionScoped类的不同实例,从而删除我之前拥有的所有cookie或记录。查看请求头,我注意到cookie JSESSIONID,我认为这是tomcat为了持久化会话而发送的,所以我已经尝试在下一个请求中发送相同的cookie,但是我没有得到任何结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-04 01:27:35

评论是对的..。要持久化会话,您只需在下一个请求中将JSESSIONID cookie发送回服务器,这种情况下的问题是JavaME中的HttpConnection只有setRequestProperty方法来包含标头值,现在如果您设置两次相同的值,它将覆盖最后一个值。由于我使用的是自定义cookie和JSessionID cookie,因此我将它们设置为以下方式:

代码语言:javascript
复制
connection.setRequestProperty("Cookie","sessionId="+ApplicationPreferences.getIn‌​stance().getSessionCookieHeader()); 
connection.setRequestProperty("Cookie","JSESSIONID="+ApplicationPreferences‌​.getInstance().getJavaSessionCookieHeader());

正确的方法是连接cookie字符串,然后设置一个Cookie标头:

代码语言:javascript
复制
String myCookies="sessionId="+ApplicationPreferences.getInstance().getSessionCookieHead‌​er()+";"+"JSESSIONID="+ApplicationPreferences.getInstance().getJavaSessionCookieHeade‌​r(); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9131938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档