2017-03-31 1 views
6

i Openfire starten und testen Sie es mit Funken alles in Ordnung ist, aber wenn ich versuche, mit Smack 4.2.0 in Android Studio zu verbinden bekam ich diese Fehlermeldung:Fehler bei Smack 4.2.0: IN AAAA ergab eine Fehlerantwort NX_DOMAIN

Ljavax/Naming/Verzeichnis/InitialDirContext; diese

und meine Abhängigkeiten:

compile "org.igniterealtime.smack:smack-java7:4.2.0" compile "org.igniterealtime.smack:smack-tcp:4.2.0" compile "org.igniterealtime.smack:smack-im:4.2.0" compile "org.igniterealtime.smack:smack-extensions:4.2.0" compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" compile "org.igniterealtime.smack:smack-bosh:4.2.0"

wenn entfernen diese: "kompilieren org.igniterealtime.smack: Klatschenkleks Java7: 4.2.0" von Abhängigkeiten und hinzufügen: kompilieren „org. igniterealtime.smack: Klatschenkleks android: 4.2.0" meine Abhängigkeiten so geworden:

compile 'com.android.support:appcompat-v7:24.0.0' compile "org.igniterealtime.smack:smack-android:4.2.0" compile "org.igniterealtime.smack:smack-tcp:4.2.0" compile "org.igniterealtime.smack:smack-im:4.2.0" compile "org.igniterealtime.smack:smack-extensions:4.2.0" compile "org.igniterealtime.smack:smack-android-extensions:4.2.0" compile "org.igniterealtime.smack:smack-bosh:4.2.0"

ich habe diesen Fehler:

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: '192.168.209.2:5222' failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for 192.168.209.2. IN A yielded an error response NX_DOMAIN, '192.168.209.2:5222' failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for 192.168.209.2. IN AAAA yielded an error response NX_DOMAIN

der Teil des Codes, der Fehler machen, wenn ich versuche zu conn.connect() ist dies:

XMPPTCPConnectionConfiguration config = null; 
      try { 
       config = XMPPTCPConnectionConfiguration.builder() 
         .setUsernameAndPassword("admin", "thepass") 
         .setXmppDomain("192.168.1.3") 
         .setHost("192.168.209.2") 
         .setPort(5222) 
         .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
         .build(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
       AbstractXMPPConnection conn1 = new XMPPTCPConnection(config); 
       conn1.setReplyTimeout(60000); 
       conn1.setPacketReplyTimeout(60000); 
       conn1.connect(); 
+0

entfernen .setXmppDomain („192.168.1.3“) dieses Verfahren und setServiceName() und den Benutzernamen und das Passwort zur Verfügung stellen, während die Anmeldung an den XMPP-Server –

+0

dies in Smack 4.1.6 funktioniert und ich bin mit zur Zeit funktioniert es für mich danke –

+0

ja seine Arbeit in über 4.2.0 Versionen derzeit verwende ich 4.1.9 und es funktioniert, aber ich brauche die neue Version 4.2.0 – sadegh

Antwort

11

Der Fehler gestoßen ist aus der unvollständigen Adressierung des XMPP-Server stammen.

dieses Szenario Stellen Sie sich vor:

my ejabberd server is running on this address: 192.168.209.2 #ejabberd server

Es gibt eine XMPP-Domäne namens "localhost" Es gibt zwei JIDs,

"[email protected]" and "[email protected]"

In Klaps, ich mit meinem Benutzer authentifizieren möchten, sagen Sie „davood @localhost ". Dann mache ich es wie folgt:

  InetAddress addr = InetAddress.getByName("192.168.209.2"); 
      HostnameVerifier verifier = new HostnameVerifier() { 
       @Override 
       public boolean verify(String hostname, SSLSession session) { 
        return false; 
       } 
      }; 
      DomainBareJid serviceName = JidCreate.domainBareFrom("localhost"); 
      XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() 
        .setHost(server) # it will be resolved by setHostAddress method 
        .setUsernameAndPassword("davood","mypass") 
        .setPort(5222) 
        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 
        .setXmppDomain(serviceName) 
        .setHostnameVerifier(verifier) 
        .setHostAddress(addr) 
        .setDebuggerEnabled(true) 
        .build(); 
      AbstractXMPPConnection conn1 = new XMPPTCPConnection(config); 

      conn1.connect(); 

      if(conn1.isConnected()){ 
       Log.d("XMPP","Connected"); 
      } 
      conn1.login(); 

      if(conn1.isAuthenticated()){ 
       Log.d("XMPP","Authenticated"); 
       EntityBareJid jid = JidCreate.entityBareFrom("[email protected]"); 
       org.jivesoftware.smack.chat2.Chat chat = ChatManager.getInstanceFor(conn1).chatWith(jid); 
       chat.send("Eureka, I am connected!"); 


      } 
+1

Vielen Dank, du reparierst es! – sadegh

7

Bitte überprüfen Sie: https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

In früheren Versionen von Smack, ConnectionConfiguration.setHost (String) verwendet werden könnten, die XMPP-Dienst des Host-IP-Adresse einzustellen. Dies ist aufgrund der hinzugefügten DNSSEC-Unterstützung nicht mehr möglich. Sie müssen stattdessen die neue Verbindungskonfiguration ConnectionConfiguration.setHostAddress (InetAddress) verwenden.

Sie können dies auch überprüfen.

failed because: de.measite.minidns.hla.ResolutionUnsuccessfulException: Asking for xxxx. \t IN \t AAAA yielded an error response NX_DOMAIN

Verwandte Themen