我正在创建一个连接到Web服务器的Swing应用程序,并运行一些servlet(由我自己创建)。用户第一次连接时,会获得一个“ playerID”,该“ playerID”将保存在他的servlet会话中。当我尝试从Swing应用程序再次调用servlet时,似乎无法识别“ PlyaerID”。我正在拨打一个简单的电话以获得PlayerID。Servlet识别这种类型的请求,并发送带有“ playerID”的JSON,如果未设置(空),则发送-1。swing应用程序总是从servlet收到“ -1”答复。我尝试从浏览器运行它,一切都很好。
我的Swing客户端可能无法发出请求,并且会话将无法保存在servlet上吗?
我可以肯定地说,与Servlet通信的swing方法可以正常工作。
Servlet会话由cookie支持。您基本上需要Set- Cookie从第一个请求的响应中获取所有标头,然后将这些name=value对作为Cookie后续请求的标头传回。
Set- Cookie
name=value
Cookie
目前尚不清楚您使用的是哪种HTTP客户端,但是如果使用java.net.URLConnection,则可以使用java.net.CookieHandler。
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(); // ...