smack 4.2.0出错:在AAAA中产生了错误响应NX_DOMAIN

sad*_*egh 9 android chat xmpp smack

我启动openFire并用spark测试它一切正常但是当我尝试在android studio中连接smack 4.2.0时出现此错误:

Ljavax /命名/目录/ InitialDirContext;

我的依赖是这样的:

编译"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:smack-java7:4.2.0"并添加它:compile"org.igniterealtime.smack:smack-android:4.2.0"我的依赖项变成这样:

编译'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:咂嘴波什:4.2.0"

我收到此错误:

org.jivesoftware.smack.SmackException $ ConnectionException:以下地址失败:'192.168.209.2:5222'失败,原因是:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求192.168.209.2.IN A产生错误响应NX_DOMAIN,'192.168.209.2:5222'失败,原因是:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求192.168.209.2.在AAAA中产生了错误响应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();  
Run Code Online (Sandbox Code Playgroud)

Dav*_*ati 18

您遇到的错误源于您的XMPP服务器的不完整寻址.

想象一下这种情况:

我的ejabberd服务器正在这个地址上运行:192.168.209.2 #ejabberd server

有一个名为"localhost"的xmpp域有两个JID,

"davood @ localhost"和"sadegh @ localhost"

在smack中,我想与我的用户进行身份验证,说"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("sadegh@localhost");
                org.jivesoftware.smack.chat2.Chat chat = ChatManager.getInstanceFor(conn1).chatWith(jid);
                chat.send("Eureka, I am connected!");


            }
Run Code Online (Sandbox Code Playgroud)


Jas*_*bra 8

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

在以前版本的Smack中,ConnectionConfiguration.setHost(String)可用于设置XMPP服务的主机IP地址.由于添加了DNSSEC支持,这已不再可能.您必须使用新的连接配置ConnectionConfiguration.setHostAddress(InetAddress).

你也可以检查一下.

失败是因为:de.measite.minidns.hla.ResolutionUnsuccessfulException:要求xxxx.在AAAA中产生了错误响应NX_DOMAIN


归档时间:

查看次数:

2966 次

最近记录:

8 年,10 月 前