2011-06-29 59 views
0

我正在開發面向Android的YM客戶端。我已經包含了openymsg0.5 api。當我運行該程序時,它顯示以下錯誤。Openymsg for Android

06-29 11:32:04.097: ERROR/InputThread(11206): org.openymsg.network.LoginRefusedException: Login Failed, unable to retrieve stage 2 url 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.yahooAuth16Stage2(Session.java:2048) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.yahooAuth16Stage1(Session.java:1955) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.receiveAuth(Session.java:1848) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.processPayload(InputThread.java:139) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.process(InputThread.java:129) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.run(InputThread.java:71) 

這是主要的錯誤:

LoginRefusedException: Login Failed, unable to retrieve stage 2 url

這個問題以前有人問,但我沒有發現,已經幫助了我一個答案。有沒有人有任何關於如何處理這個錯誤的想法?我已經通過了openymsg測試代碼和代碼庫,看起來一切正常。

我只是檢查,它工作正常作爲一個Java應用程序,但如果作爲Android的一部分它給日誌中的錯誤。我正在創建會話如下

Session session = new Session(); 
session.addSessionListener(new SessionListenerClass()); 
try{ 
    session.login("username", "password"); 
    if (session!=null 
     && session.getSessionStatus()== SessionState.LOGGED_ON) 
    { 
     System.out.println("It logged on!!!!!!!"); 
    } 
} 

SessionListner:

public class SessionListenerClass extends SessionAdapter 
{ 

    @Override 
    public void messageReceived(SessionEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.messageReceived(event); 
    } 

    @Override 
    public void notifyReceived(SessionNotifyEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.notifyReceived(event); 
    } 

    @Override 
    public void newMailReceived(SessionNewMailEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.newMailReceived(event); 
    } 

    @Override 
    public void errorPacketReceived(SessionErrorEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.errorPacketReceived(event); 
    } 

    @Override 
    public void connectionClosed(SessionEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.connectionClosed(event); 
    } 

} 
+0

你確定你的設備/仿真器有一個可用的Internet連接?您是否在Android Manifest中聲明瞭Internet特權? –

+0

是的設備可以使用3G和我已經添加<使用權限 android:name =「android.permission.INTERNET」/> – Kavitha

+0

有什麼特定於android ???我錯過了這裏,因爲當我測試與我的筆記本電腦一樣正常的Java程序上面的代碼返回sessionStatus作爲登錄,但與Android引發錯誤 – Kavitha

回答

0

您使用的庫基於jYMSG-library,它具有更好的文檔。

的文檔,你拋出的異常的LoginRefusedException寫着:

Returns the status code given by the server. This will one of the values specified in StatusConstants. Values will be either STATUS_BADUSERNAME for an unknown account, or STATUS_BAD for a bad password (or other fault).

所以,你可以檢查它是否是「別的東西」或只是一個錯誤的用戶名/密碼。


好的,這個接縫是庫中的一個bug。我發現this這表明其中一位項目負責人知道這個問題。但我不確定這是否會很快解決。

您還應該注意,該項目被標記爲「alpha」。我只能建議你繼續關注解決這個問題的新版本。

+0

正如我告訴我,我嘗試了相同的代碼作爲Java應用程序,它工作正常。我正在調試該庫的源代碼。我看到,yahooAuth16Stage2方法拋出異常,這是從 – Kavitha

+0

獲得的響應代碼字符串loginLink =「https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=」 +令牌; URL u =新的URL(loginLink); URLConnection uc = u.openConnection(); uc.getResponseCode返回-1而不是200,這是HTTP_OK – Kavitha

+0

你可以顯示你的'SessionListenerClass()'類的代碼嗎? –