从swing应用程序到servlet进行http调用,会话未保存

时间:2011-09-22 20:22:41

标签: java swing session servlets

我正在创建一个连接到Web服务器的Swing应用程序,运行一些servlet(由我自己创建)。在用户第一次连接时,他得到一个" playerID"这是在servlets上的会话中保存的。当我尝试从Swing应用程序再次调用servlet时," PlyaerID"似乎不被承认。我正在进行简单的调用以获取PlayerID。 servlet识别这种类型的请求,并使用" playerID"发送一个JSON。如果没有设置(null),则发送-1。 swing应用程序总是得到" -1"来自servlet的回复。我尝试从浏览器运行它,一切都很好。

我的Swing客户端是否可能无法发出请求,并且会话不会保存在servlet上?

我可以肯定地告诉你,与servlet通信的swing方法效果很好。

1 个答案:

答案 0 :(得分:3)

servlet会话由cookie支持。您基本上需要从第一个请求的响应中获取所有Set-Cookie标头,然后将name=value对作为后续请求的Cookie标头传回。

目前还不清楚您使用的是哪个HTTP客户端,但如果它是java.net.URLConnection,那么您可以使用java.net.CookieHandler进行此操作。

// First set the default cookie manager.
CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));

// All the following subsequent URLConnections will use the same cookie manager.
URLConnection connection = new URL(url).openConnection();
// ...

connection = new URL(url).openConnection();
// ...

connection = new URL(url).openConnection();
// ...

另见: