我正在使用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'