В настоящее время я разрабатываю клиент для Android XMPP для связи с настройкой сервера Tigase. Перед началом разработки на Android я пишу простой Java-код на ПК для проверки подключения к XMPP-серверу. Мой домен XMPP - это мое имя для ПК "mwbn43- 1", а имя и пароль администратора - admin и tigase соответственно.
Ниже приведен фрагмент кода, который я использую
class Test {
public static void main(String args[])throws Exception
{
System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;
ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222);
config.setCompressionEnabled(true);
config.setSASLAuthenticationEnabled(true);
XMPPConnection con = new XMPPConnection(config);
// Connect to the server
con.connect();
con.login("admin", "tigase");
Chat chat = con.getChatManager().createChat("aaphadke@mwbn43-1",
new MessageListener() {
public void processMessage(Chat chat, Message message) {
// Print out any messages we get back to standard out.
System.out.println("Received message: " + message);
}
});
try {
chat.sendMessage("Hi!");
}
catch (XMPPException e) {
System.out.println("Error Delivering block");
}
String host = con.getHost();
String user = con.getUser();
String id = con.getConnectionID();
int port = con.getPort();
boolean i = false;
i = con.isConnected();
if (i)
System.out.println("Connected to host " + host + " via port " + port + " connection id is " + id);
System.out.println("User is " + user);
con.disconnect();
}
}
Когда я запускаю этот код, я получаю следующую ошибку
Exception in thread "main" Resource binding not offered by server:
at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthenticatio n.java:416) at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:331)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:349)
at Test.main(Test.java:26)
Я нашел эти статьи по одной и той же проблеме, но никакого конкретного решения здесь Может кто-нибудь, пожалуйста, скажите мне решение этой проблемы. Я проверил файл XMPPConnection.java в API Smack и выглядел так же, как указано в решении ссылки.
Спасибо, Ameya
Я нашел решение проблемы, как указано в здесь
Это строки, которые я должен добавить, прежде чем подключаться к серверу
ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222);
config.setSASLAuthenticationEnabled(false);
XMPPConnection xmpp = new XMPPConnection(config);
Спасибо за вашу помощь
Я думаю, что это проблема с библиотекой, ошибка. Он не обрабатывает протокол правильно. Прежде чем пользователь будет аутентифицирован, нет смысла отправлять привязку ресурса, поэтому он не объявляется сервером. Клиент не должен жаловаться на это.