2014-11-11 1 views
1

Я пытаюсь подключиться к серверу Vines XMPP с Java с помощью API Smack. Однако, когда я использую следующий код подключения:Smack API бросает «Создание сеанса, не предлагаемое сервером» Исключение

ConnectionConfiguration connectionConfiguration = new ConnectionConfiguration("localhost", 5222); 
this.connection = new XMPPConnection(connectionConfiguration); 
connection.connect(); 
connection.login(AUCTION_LOGIN, AUCTION_PASSWORD, AUCTION_RESOURCE); 

Я получаю следующее сообщение об ошибке:

Caused by: Session establishment not offered by server: 
    at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthentication.java:456) 

Я понимаю, что вопрос, который будет связан с sessions now being deprecated из протокола XMPP. Мне не удалось найти способ использования класса ConnectionConfiguration и других, чтобы обойти эту проблему.

+0

Какую версию Smack вы используете? – Flow

ответ

0

Вы, кажется, используете старую уязвимую версию Smack (т. Е. < 4.0.0).

Нынешняя стабильная версия Smack не генерирует такого исключения, поскольку считает, что привязка сеанса является опцией. Он может быть полностью отключен с помощью setLegacySessionDisabled(true).

+0

Вы правы. Я использовал 3. *. Я думал, что я схватил последнюю версию с сайта, на котором перечислены зависимости maven, но, очевидно, нет, и теперь я могу подключиться. Спасибо. –

+0

Названия артефактов были переименованы в Smack 4. По существу «smack» стал «smack-core». – Flow

+0

Да, я понял. Я думал, что соединение работает, но с момента обновления я получил исключения, в которых указывается отсутствие сертификата. Я попытался добавить сертификаты, но я считаю, что примеры запутываются в зависимости от используемой версии Smack. Мой текущий код -> https://gist.github.com/paulspencerwilliams/f07104ecc51d14349799 Есть ли определенный пример использования Smack 4.0.x с TLS/сертификатами? –

Смежные вопросы