Android smack无法连接到远程ejabberd服务器

时间:2016-11-09 07:39:14

标签: java android xmpp ejabberd asmack

我正在使用smack libary连接ejabberd xmpp服务器,我在本地托管了ejabberd。它工作正常,我可以连接,发送短信。我用来连接的代码是

    public static final String HOST = "remote_host_ip_address";
    public static final int PORT = 5222;
    public static final int CONNECT_TIME_OUT = 20000;
    public static final String RESOURCE = "Smack";
      XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
        configBuilder.setHost(HOST);
        configBuilder.setPort(PORT);
        //configBuilder.setServiceName("localhost");
        configBuilder.setServiceName("hostname.com");

        configBuilder.setResource(RESOURCE);
        configBuilder.setCompressionEnabled(true);
        configBuilder.setConnectTimeout(CONNECT_TIME_OUT);
        //configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        connectionConfig = configBuilder.build();
        connection = new XMPPTCPConnection(connectionConfig);
        accountManager = AccountManager.getInstance(connection);
        chatManager = ChatManager.getInstanceFor(connection);
        chatManager.addChatListener(chatManagerListener);

当我将HOST值分配给我的本地IP地址(如192.168.101.1)并使用configBuilder.setServiceName("localhost");时,如果我将configBuilder.setServiceName("hostname.com");HOST变量分配给远程服务器,它会很完美ip地址会引发以下错误

  

org.jivesoftware.smack.SmackException:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

但是如果使用像gajim这样的任何xmpp客户端,我可以连接到远程服务器。我使用了以下依赖项

compile 'org.igniterealtime.smack:smack-android-extensions:4.1.3'
compile 'org.igniterealtime.smack:smack-tcp:4.1.3'

0 个答案:

没有答案