You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用连接本地OpenFire XMPP服务器遇ResolutionUnsuccessfulException

解决Android连接本地OpenFire时的NX_DOMAIN错误

我来帮你搞定这个问题!从报错信息来看,核心问题是Smack库把你指定的IP地址当成域名去做DNS解析了,而IP本身不是一个合法的域名,所以DNS服务器返回了NX_DOMAIN(找不到域名记录)的错误。下面是具体的解决步骤和修改后的代码:

错误原因分析

你虽然在代码里设置了setHost(ip),但Smack默认会尝试对这个主机地址做DNS SRV记录查找,同时会把IP当作域名去查询A记录——这显然是行不通的,因为IP不是域名,自然查不到对应的DNS记录,就抛出了这个异常。

修改后的代码示例

import java.net.InetAddress
import org.jivesoftware.smack.ConnectionConfiguration.DnsLookupMode
import org.jivesoftware.smack.tcp.XMPPTCPConnection
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration

try {
    val ip = "xxx.xxx.xx.xx" // 你的OpenFire服务器IP
    val username = "你的用户名"
    val password = "你的密码"
    val domain = "你的XMPP域名(比如OpenFire设置里的domain)"

    val config = XMPPTCPConnectionConfiguration.builder()
        .setUsernameAndPassword(username, password)
        .setHost(ip)
        // 直接指定IP对应的InetAddress,跳过DNS解析
        .setHostAddress(InetAddress.getByName(ip))
        .setXmppDomain(domain)
        // 禁用DNS查找,避免不必要的解析操作
        .setDnsLookupMode(DnsLookupMode.NONE)
        // 禁用主机名验证(因为用IP连接,SSL验证会失败,测试环境用)
        .setDisableHostnameVerification(true)
        // 明确指定OpenFire的XMPP端口,默认是5222
        .setPort(5222)
        .build()

    val connection = XMPPTCPConnection(config)
    connection.connect()
    connection.login()
    // 连接成功后的操作
} catch (e: Exception) {
    e.printStackTrace()
}

关键设置说明

  • setHostAddress(InetAddress.getByName(ip)):直接传入IP对应的网络地址对象,告诉Smack直接连接这个IP,不需要再做任何DNS解析;
  • setDnsLookupMode(DnsLookupMode.NONE):彻底关闭所有DNS相关的查找逻辑,从根源上避免解析错误;
  • setDisableHostnameVerification(true):因为我们用IP而非域名连接,默认的SSL/TLS主机名验证会失败,测试环境下可以禁用这个验证(生产环境建议配置合法的SSL证书);
  • setPort(5222):明确指定OpenFire的默认XMPP端口,避免端口匹配错误。

额外检查点

  • 确认OpenFire服务器的5222端口已经开放,并且服务器的防火墙(比如Windows防火墙、Linux iptables)允许该端口的入站连接;
  • 确保你的Android应用已经在AndroidManifest.xml中添加了互联网权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 验证OpenFire后台已经创建了对应的用户,且用户名、密码正确,用户状态为启用。

内容的提问来源于stack exchange,提问作者Héctor Valls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:28:55