2011-07-13 20 views
5

Estoy tratando de implementar un simple jabber messenger en Android utilizando la biblioteca asmack. Aquí está el código:(a) Smack devuelve el error "servicio no disponible (503)" al iniciar sesión()

public boolean login() 
{ 
    if (connection != null && connection.isConnected()) 
    { 
     Log.i("XMPP", connection.getHost()); 
     try 
     { 
      connection.login(USERNAME, PASSWORD); 
     } 
     catch (XMPPException e) 
     { 
      e.printStackTrace(); 
      return false; 
     } 
     return true; 
    } 
    return false; 
} 

Excepción consigo después connection.login() (conexión se ve bien):

service-unavailable(503) 
at org.jivesoftware.smack.NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:239) 
at org.jivesoftware.smack.Connection.login(Connection.java:353) 
at com.someapp.networking.XMPPMessenger.login(XMPPMessenger.java:60) 
at com.someapp.XMPPService.onCreate(XMPPService.java:33) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2780) 
at android.app.ActivityThread.access$3200(ActivityThread.java:119) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1917) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 

Cuál podría ser el error?

+0

Hum ¿podría añadir más detalles? ¿Con qué servidor estás tratando de conectarte? ¿Seguro que especificarás el puerto/dominio/host correcto? el servicio no disponible generalmente significa que puede ser alcanzado o que usted especificó información incorrecta. – Guillaume

Respuesta

1

Asmack puede establecer una nueva conexión con el servidor, pero cae en Non-SASL mode por alguna razón (La llamada de NonSASLAuthentication.authenticate(NonSASLAuthentication.java:77)). Creo que eso es lo que el servidor intenta decirle con la respuesta "servicio no disponible (503)", es que no es compatible con la autenticación no SASL.

Trate de resolver por qué smack no prueba la autenticación SASL.

Nota: Las líneas en el visor de fuente de smack están un poco apagadas debido a las diferentes versiones y los parches de asmack.

+0

¿Cuál puede ser la solución para esto? Necesitamos autenticar al usuario de Facebook y obtener una lista de amigos y enviarles un mensaje, pero no podemos iniciar sesión ya que estamos obteniendo el error de autenticación –

+0

¿Esto se está convirtiendo algunas veces en cuerpo del mensaje? Cual podría ser el problema ? –

1

Está funcionando, finalmente, para mí de esta manera:

ConnectionConfiguration connConfig = new ConnectionConfiguration(host,port,host); 
connection = new XMPPConnection(connConfig); 
connConfig.setSASLAuthenticationEnabled(true); 
connection.connect(); 
connection.login(userID, password); 

he utilizado Android usando Asmack biblioteca que he descargado desde abajo URL:

https://code.google.com/p/asmack/downloads/detail?name=asmack-2010.05.07.jar

tener cuidado con el ID de usuario.

En lugar de utilizar

connection.login("[email protected]",password) 

Es un trabajo para mí sólo si uso connection.login ("nombre de usuario", contraseña);

Buena suerte ...

Cuestiones relacionadas