我正在创建一个连接到Web服务器的Swing应用程序,运行一些servlet(由我自己创建)。在用户第一次连接时,他得到一个" playerID"这是在servlets上的会话中保存的。当我尝试从Swing应用程序再次调用servlet时," PlyaerID"似乎不被承认。我正在进行简单的调用以获取PlayerID。 servlet识别这种类型的请求,并使用" playerID"发送一个JSON。如果没有设置(null),则发送-1。 swing应用程序总是得到" -1"来自servlet的回复。我尝试从浏览器运行它,一切都很好。
我的Swing客户端是否可能无法发出请求,并且会话不会保存在servlet上?
我可以肯定地告诉你,与servlet通信的swing方法效果很好。
答案 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();
// ...