2010-06-04 3 views
1

Je développe actuellement un client Android XMPP pour communiquer avec le serveur Tigase localement.Avant de commencer le développement sur Android, j'écris un simple code Java sur PC pour tester la connectivité avec le serveur XMPP .Mon domaine XMPP est mon nom de pc "mwbn43-1" et le nom d'utilisateur et les mots de passe administrateur sont respectivement admin et tigase.Smack API donnant une erreur lors de la connexion au serveur Tigase

Ce qui suit est l'extrait du code que je utilise

class Test { 

public static void main(String args[])throws Exception 
{ 

System.setProperty("smack.debugEnabled", "true"); 
XMPPConnection.DEBUG_ENABLED = true; 

ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222); 
config.setCompressionEnabled(true); 
config.setSASLAuthenticationEnabled(true); 

XMPPConnection con = new XMPPConnection(config); 

// Connect to the server 
con.connect(); 
con.login("admin", "tigase"); 

Chat chat = con.getChatManager().createChat("[email protected]", 
    new MessageListener() {  
    public void processMessage(Chat chat, Message message) { 
      // Print out any messages we get back to standard out. 
      System.out.println("Received message: " + message); 
     } 
    }); 
     try { 
     chat.sendMessage("Hi!"); 
    } 
    catch (XMPPException e) { 
     System.out.println("Error Delivering block"); 
    } 


String host = con.getHost(); 
String user = con.getUser(); 
String id = con.getConnectionID(); 
int port = con.getPort(); 
boolean i = false; 
i = con.isConnected(); 
if (i) 
System.out.println("Connected to host " + host + " via port " + port + " connection id is " + id); 

System.out.println("User is " + user); 
con.disconnect(); 
} 
} 

Quand je lance ce code je reçois l'erreur suivante

Exception in thread "main" Resource binding not offered by server: 
at org.jivesoftware.smack.SASLAuthentication.bindResourceAndEstablishSession(SASLAuthenticatio  n.java:416) at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:331) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:395) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:349) 
at Test.main(Test.java:26) 

J'ai trouvé cet article sur le même problème, mais pas de solution concrète here Quelqu'un peut-il s'il vous plaît me dire la solution pour ce problème.J'ai vérifié le fichier XMPPConnection.java dans l'API Smack et il ressemble à ce qui est donné dans la solution de liaison.

Merci, Ameya

Répondre

3

Je trouve la solution au problème comme indiqué dans here

Ce sont les lignes que je dois ajouter avant de se connecter au serveur

ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1", 5222); 
config.setSASLAuthenticationEnabled(false); 
XMPPConnection xmpp = new XMPPConnection(config); 

Merci pour votre aide

-1

Je pense que cela est un problème avec la bibliothèque, un bug. Il ne gère pas le protocole correctement. Avant que l'utilisateur soit authentifié, il n'y a aucun intérêt à envoyer une liaison de ressources, donc il n'est pas annoncé par le serveur. Le client ne devrait pas s'en plaindre.

+0

Que dois-je faire pour le faire fonctionner correctement.J'ai essayé le même code avec le serveur Gtalk et son fonctionnement bien avec elle.Alors je suppose que le problème est avec la mise en place du serveur (Un problème de ressources) .Dois-je faire quelque chose sur le côté serveur ? –

Questions connexes