2012-07-30 288 views
0

我正嘗試在android中使用BOSH管理器連接ejabber,並使用asmack庫。登錄到服務器時未登錄到服務器

但我得到以下錯誤。

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 
+1

看起來像aSmack中的一個bug,這是由BOSH補丁和3.2.0分支的合併引起的。 – Flow 2012-07-30 17:19:25

回答

2

瞥了一眼aSmack人士指出,這一個的錯誤。快速解決方法是撥打Configuration.setRosterLoadedAtLogin(false),修復方法包括在authenticated = true;之後移動BOSHConnection.java:350後的3行。

我在aSmack中做了更改,請運行build.bash並使用生成的.jar。

+0

我剛剛加了'bconfig.setRosterLoadedAtLogin(false);'現在我登錄成功了,謝謝哥們 – Hunt 2012-07-30 18:12:18