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

我正在尝试使用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; } 

我在connection.login()之后得到的exception(连接看起来很好):

 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) 

可能是什么错误?

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

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

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

它最终以这种方式为我工作:

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

我使用过使用Asmack库的Android,我从下面的URL下载了:

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

注意userID

而不是使用

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

只有当我使用connection.login(“username”,password)时,它才对我有用;

祝好运…