Выполнение http-вызовов из приложения Swing в сервлет, сеанс не сохранен - PullRequest
2 голосов
/ 23 сентября 2011

Я создаю приложение Swing, которое подключается к веб-серверу и запускает некоторые сервлеты (созданные мной). При первом подключении пользователь получает «playerID», который сохраняется в его сеансе на сервлетах. Когда я пытаюсь сделать еще один вызов из приложения Swing сервлету, "PlyaerID", кажется, не распознается. Я делаю простой звонок, чтобы получить PlayerID. Сервлеты распознают этот тип запроса и отправляют JSON с «playerID», и если он не установлен (ноль), то он отправляет -1. Приложение Swing всегда получает ответ «-1» от сервлета. Я попытался запустить его из браузера, и все было хорошо.

Возможно ли, что мой клиент Swing не может сделать запрос и сеанс не будет сохранен в сервлете?

Я могу с уверенностью сказать, что метод свинга, который связывается с сервлетом, работает хорошо.

1 Ответ

3 голосов
/ 23 сентября 2011

Сеанс сервлета поддерживается файлом 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();
// ...

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...