(a) Smack возвращает ошибку «service-unavailable (503)» при входе в систему () - PullRequest
5 голосов
/ 13 июля 2011

Я пытаюсь реализовать простой мессенджер jabber на Android, используя библиотеку asmack.Вот код:

public boolean login()
{
    if (connection != null && connection.isConnected())
    {
        Log.i("XMPP", connection.getHost());
        try 
        {
            connection.login(USERNAME, PASSWORD);
        } 
        catch (XMPPException e) 
        {
            e.printStackTrace();
            return false;
        }
        return true;
    }
    return false;
}

Исключение, которое я получаю после connection.login () (соединение выглядит нормально):

service-unavailable(503)
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:239)
at org.jivesoftware.smack.Connection.login(Connection.java:353)
at com.someapp.networking.XMPPMessenger.login(XMPPMessenger.java:60)
at com.someapp.XMPPService.onCreate(XMPPService.java:33)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2780)
at android.app.ActivityThread.access$3200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)

В чем может быть ошибка?

Ответы [ 2 ]

1 голос
/ 26 мая 2014

Наконец-то это работает для меня следующим образом:

ConnectionConfiguration connConfig = new ConnectionConfiguration(host,port,host);
connection = new XMPPConnection(connConfig);
connConfig.setSASLAuthenticationEnabled(true); 
connection.connect();
connection.login(userID, password);

Я использовал Android, используя Asmack библиотеку, которую я скачал с ниже URL:

https://code.google.com/p/asmack/downloads/detail?name=asmack-2010.05.07.jar

Будьте осторожны с ИД пользователя .

Вместо использования

connection.login("username@ejabberdServerIP",password)

это работает для меня, только если я использую connection.login ("имя пользователя", пароль);

Хорошоудачи ...

1 голос
/ 12 октября 2011

Asmack может установить новое соединение с сервером, но по какой-то причине он попадает в Режим без SASL (Вызов NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77)). Я думаю, что это то, что сервер пытается сообщить вам с помощью ответа "service-unavailable (503)" , что он не поддерживает проверку подлинности не-SASL.

Попробуйте отладить, почему smack не пытается аутентифицировать SASL.

Примечание: строки в средстве просмотра исходного кода smack немного отключены из-за разных версий и исправлений из asmack.

...