2017-03-31 61 views
6

我开始的Openfire并测试它与火花一切正常,但是当我尝试使用在Android Studio中咂嘴4.2.0连接我得到这个错误:错误上咂嘴4.2.0:IN AAAA产生错误响应NX_DOMAIN

Ljavax /命名/目录/ InitialDirContext;

,我的依赖性是这样的:

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"

时删除此: “编译org.igniterealtime.smack:咂嘴,java7:4.2.0” 从依赖和补充一点: 编译“组织。 igniterealtime.smack:咂嘴,安卓4.2.0" 我的依赖变成了这个样子:

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"

我得到这个错误:

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

,使错误,当我尝试conn.connect(代码的一部分)是这样的:

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

删除.setXmppDomain(“192.168.1.3”)这个方法和setServiceName(),并提供用户名和密码,同时登录到XMPP服务器 –

+0

这部作品在咂嘴4.1.6和我使用目前它为我工作,谢谢 –

+0

是它的工作在4.2.0以上版本目前我使用4.1.9和它的工作,但我需要新版本4.2.0 – sadegh

回答

11

您遇到的不完全解决您的XMPP服务器所产生的误差。

想象一下这样的情景:

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

有一个名为 “本地主机” 有两个JID的一个XMPP域,

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

在咂嘴,我想和我的用户进行身份验证,说“davood @localhost”。 后来我做如下:

  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

谢谢你,你修好了! – sadegh

7

请检查: https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

在拍击,ConnectionConfiguration.setHost(串)的早期版本可用于设置XMPP服务的主机IP地址。由于增加了DNSSEC支持,因此不再可能。您必须改用新的连接配置ConnectionConfiguration.setHostAddress(InetAddress)。

您也可以检查这一点。

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