(a)Smack在登录时返回"service-unavailable(503)"错误()

Iva*_*mov 5 java android smack asmack

我正在尝试使用asmack库在Android上实现一个简单的jabber messenger.这是代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

我在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)
Run Code Online (Sandbox Code Playgroud)

可能是什么错误?

Flo*_*low 1

Asmack 能够与服务器建立新的连接,但由于某种原因陷入Non-SASL 模式( 的调用NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77))。我认为这就是服务器试图通过“service-unavailable(503)”响应告诉您的内容,即它不支持非 SASL 身份验证。

尝试调试为什么 smack 不尝试 SASL 身份验证。

注意:smack 源查看器中的行有点偏离,因为不同的版本和来自 asmack 的补丁。