2012-07-30 3 views
0

asmack 라이브러리의 도움으로 안드로이드의 BOSH 관리자를 사용하여 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 

여기는이 한는 버그가 표시된 aSmack 소스에서 내 코드

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에서 BOSH 패치와 3.2.0 분기의 병합으로 인한 버그와 같이 보입니다. – Flow

답변

2

눈길이다. 신속한 해결 방법은 Configuration.setRosterLoadedAtLogin(false)으로 전화하는 것입니다. 수정하려면 줄 뒤에 BOSHConnection.java:350에서 3 줄 이동하는 것이 좋습니다.

나는 aSmack에서 변경했습니다. build.bash을 실행하고 생성 된 .jar를 사용하십시오.

+0

방금'bconfig.setRosterLoadedAtLogin (false);'을 추가했는데 이제는 성공적으로 로그인했습니다. – Hunt

관련 문제