java - HttpConnection维护Session

标签 java tomcat java-me session-cookies httpconnection

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

最佳答案

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

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

正确的做法是连接 cookie 字符串,然后为它们设置一个 Cookie header :

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

关于java - HttpConnection维护Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9131938/

相关文章:

java - 未找到类 "android.view.menu"

java - 如何更改 Tomcat 中 JSESSIONID 和 jvmRoute 的定界符/分隔符?

java - 在 LWUIT 组件上绘制 javax.microedition.lcdui.Graphics

java - 高效的树排序

java - 生产者-消费者模型;存储缓冲区进入和退出时间

java - Maven:我的项目有一个不在任何 Maven 仓库(系统范围)中的依赖项。它会包含在我的最终 jar 中吗?

java - 文本未显示正确的 FontAwesome 和 Swing

java - 如何启动liferay-portal-6.1.1-ce-ga2 server 在server2008 r2中启动windows服务

tomcat - 我无法从同一 LAN 中的另一台 PC 访问我的 XAMPP 服务器

用于 J2ME 移动开发的 Java