我正在使用使用Rest架构的java完成的一些web服务,我的客户这是一个使用HttpConnection检索数据的移动应用程序。为了控制身份验证和授权,我使用cookie,由@SessionScoped类管理,但是我不知道如何通过请求保持会话。基本上,问题是我将会话管理器注入到@RequestScoped的其他服务中,然而,由于会话不是持久的,所以我总是检索@SessionScoped类的不同实例,从而删除我之前拥有的所有cookie或记录。查看请求头,我注意到cookie JSESSIONID,我认为这是tomcat为了持久化会话而发送的,所以我已经尝试在下一个请求中发送相同的cookie,但是我没有得到任何结果。
发布于 2012-02-04 01:27:35
评论是对的..。要持久化会话,您只需在下一个请求中将JSESSIONID cookie发送回服务器,这种情况下的问题是JavaME中的HttpConnection只有setRequestProperty方法来包含标头值,现在如果您设置两次相同的值,它将覆盖最后一个值。由于我使用的是自定义cookie和JSessionID cookie,因此我将它们设置为以下方式:
connection.setRequestProperty("Cookie","sessionId="+ApplicationPreferences.getInstance().getSessionCookieHeader());
connection.setRequestProperty("Cookie","JSESSIONID="+ApplicationPreferences.getInstance().getJavaSessionCookieHeader());正确的方法是连接cookie字符串,然后设置一个Cookie标头:
String myCookies="sessionId="+ApplicationPreferences.getInstance().getSessionCookieHeader()+";"+"JSESSIONID="+ApplicationPreferences.getInstance().getJavaSessionCookieHeader(); https://stackoverflow.com/questions/9131938
复制相似问题