Error on smack 4.2.0 : IN AAAA yielded an error response NX_DOMAIN

匿名 (未验证) 提交于 2019-12-03 02:20:02

问题:

i start openFire and test it with spark everything is ok but when i try to connect with smack 4.2.0 in android studio i got this error:

Ljavax/naming/directory/InitialDirContext;

and my dependencies is this:

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"

when remove this : "compile org.igniterealtime.smack:smack-java7:4.2.0" from dependencies and add this: compile "org.igniterealtime.smack:smack-android:4.2.0" my dependencies become like this:

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"

I got This Error:

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

the part of code that make error when i try to conn.connect() is this:

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();   

回答1:

The error you have encountered is stemming from incomplete addressing of your XMPP server.

Imagine this scenario:

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

There is a xmpp domain named "localhost" There are two JIDs,

"davood@localhost" and "sadegh@localhost"

In smack, I want to authenticate with my user, say "davood@localhost". Then I do it as follow:

            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("sadegh@localhost");                 org.jivesoftware.smack.chat2.Chat chat = ChatManager.getInstanceFor(conn1).chatWith(jid);                 chat.send("Eureka, I am connected!");               } 


回答2:

Please check : https://github.com/igniterealtime/Smack/wiki/Smack-4.2-Readme-and-Upgrade-Guide

In previous versions of Smack, ConnectionConfiguration.setHost(String) could be used to set the XMPP service's host IP address. This is no longer possible due to the added DNSSEC support. You have to use the new connection configuration ConnectionConfiguration.setHostAddress(InetAddress) instead.

You can check this also.

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!