登录到服务器时未登录到服务器
问题描述:
我正尝试在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
答
瞥了一眼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
看起来像aSmack中的一个bug,这是由BOSH补丁和3.2.0分支的合并引起的。 – Flow 2012-07-30 17:19:25