Android 登录到服务器时未登录到服务器

Android 登录到服务器时未登录到服务器,android,xmpp,ejabberd,asmack,Android,Xmpp,Ejabberd,Asmack,我正试图在asmack库的帮助下使用android中的BOSH Manager与ejabber连接 但我得到以下错误 Caused by: java.lang.IllegalStateException: Not logged in to server. at org.jivesoftware.smack.Roster.reload(Roster.java:197) at org.jivesoftware.smack.BOSHConnection.login(BOSHConnec

我正试图在asmack库的帮助下使用android中的BOSH Manager与ejabber连接

但我得到以下错误

Caused by: java.lang.IllegalStateException: Not logged in to server.
    at org.jivesoftware.smack.Roster.reload(Roster.java:197)
    at org.jivesoftware.smack.BOSHConnection.login(BOSHConnection.java:351)
    at org.jivesoftware.smack.Connection.login(Connection.java:353)
    at com.bcl.BoradCastLocationActivity$StartXMPPConnection.doInBackground(BoradCastLocationActivity.java:75)
    at com.bcl.BoradCastLocationActivity$StartXMPPConnection.doInBackground(BoradCastLocationActivity.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:185)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
    ... 4 more
这是我的密码

SASLAuthentication.registerSASLMechanism("DIGEST-MD5",SASLDigestMD5Mechanism.class);
SASLAuthentication.supportSASLMechanism("DIGEST-MD5", 1);

System.setProperty("smack.debugEnabled", "true");
XMPPConnection.DEBUG_ENABLED = true;
SmackConfiguration.setPacketReplyTimeout(6000);
BOSHConfiguration bconfig = new
         BOSHConfiguration(false, "example.com", 5280, "/xmpp-http-bind/", "example.com");

bconfig.setSASLAuthenticationEnabled(true);
BOSHConnection xmpp = new BOSHConnection(bconfig);

 xmpp.connect();
 xmpp.login("username","password"); // HERE I AM GETTING AN ERROR

只要看一眼aSmack源代码,就会发现这是一个bug。一个快速的解决方法是调用
配置。setRosterLoadedAtLogin(false)
,修复方法包括将
BOSHConnection.java:350
中的3行移到行
authenticated=true之后


我已经在aSmack中做了更改,请运行
build.bash
并使用生成的.jar。

似乎是aSmack中的一个bug,这是由BOSH补丁和3.2.0分支合并引起的。我刚刚添加了
bconfig.setRosterLoadedAtLogin(false)现在我已成功登录,谢谢你,伙计