2011-06-29 1 views
0

Je développe le client YM pour Android. J'ai inclus l'api openymsg0.5. Quand je cours le programme il montre l'erreur suivante.Openymsg pour 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) 

Ceci est l'erreur principale:

LoginRefusedException: Login Failed, unable to retrieve stage 2 url

Cette question a été posée, mais je n'ai pas trouvé une réponse qui m'a aidé. Est-ce que quelqu'un a une idée sur la façon de traiter cette erreur? Je suis passé par le code de test openymsg et la base de code et tout semble aller bien.

Je viens de vérifier, il fonctionne très bien comme une application java, mais si elle est utilisée dans le cadre d'Android donne journal erreur .Je suis création de la session comme suit

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

Etes-vous sûr que votre périphérique/émulateur dispose d'une connexion Internet opérationnelle? Avez-vous déclaré le privilège Internet dans le manifeste Android? –

+0

Oui, le périphérique peut utiliser 3G et j'ai ajouté Kavitha

+0

Y at-il quelque chose de spécifique à android ??? qui je manque ici, parce que quand je teste avec mon ordinateur portable tout comme le programme java normal le code ci-dessus renvoie sessionStatus comme connecté, mais avec Android lance une erreur – Kavitha

Répondre

0

La bibliothèque que vous utilisez est basée sur la bibliothèque jYMSG, qui a une meilleure documentation.

la documentation de votre exception lancée, le LoginRefusedException lit:

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).

vous pouvez donc vérifier si elle est « autre chose » ou juste un mauvais nom d'utilisateur/mot de passe.


D'accord, cela semble être un bug dans la bibliothèque. J'ai trouvé this qui montre que l'un des chefs de projet connaît le problème. Mais je ne suis pas sûr si cela sera corrigé bientôt.

Vous devez également remarquer que le projet est marqué "alpha". Je ne peux que vous suggérer de rester à l'écoute des nouvelles versions qui règlent ce problème.

+0

Comme je l'ai dit j'ai essayé le même code que l'application Java et ça fonctionne bien. Je débogue avec le code source de cette bibliothèque. Je vois que la méthode yahooAuth16Stage2 génère une exception, c'est le code de réponse obtenu à partir de – Kavitha

+0

String loginLink = "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=" + jeton; URL u = nouvelle URL (loginLink); URLConnection uc = u.openConnection(); uc.getResponseCode renvoie -1 au lieu de 200 avec HTTP_OK – Kavitha

+0

Pouvez-vous afficher le code de votre classe 'SessionListenerClass()'? –