这是我的代码:
XMPPTCPConnectionConfiguration.Builder connectionBuilder =
XMPPTCPConnectionConfiguration.builder();
connectionBuilder
.setHost(MY_HOST)
.setServiceName(MY_SERVICE_NAME)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setDebuggerEnabled(true);
XMPPTCPConnection connection = new XMPPTCPConnection(connectionBuilder.build());
connection.connect();
运行时,我遇到了这个例外:
W/System.err: org.jivesoftware.smack.SmackException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
有没有人有任何快速解决方案来克服这个问题?我对深入理解SSL协议等不感兴趣。我也不关心项目这个阶段的安全性。
我还想提一下,我使用Swift应用程序成功连接到服务器,因此问题可能不在服务器端。提前谢谢。
答案 0 :(得分:2)
// Create a connection to the jabber.org server.
// Create the configuration for this new connection
InetAddress addr = null;
try {
addr = InetAddress.getByName("192.***.**.**");
} catch (UnknownHostException e) {
e.printStackTrace();
}
HostnameVerifier verifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return false;
}
};
DomainBareJid serviceName = null;
try {
serviceName = JidCreate.domainBareFrom("localhost");
} catch (XmppStringprepException e) {
e.printStackTrace();
}
XMPPTCPConnectionConfiguration config =
XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(USER_CURRENT_USER, "password")
.setPort(5222)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.setXmppDomain(serviceName)
.setHostnameVerifier(verifier)
.setHostAddress(addr)
.setDebuggerEnabled(true)
.build();
connection = new XMPPTCPConnection(config);
try {
connection.connect();
} catch (SmackException | IOException | InterruptedException | XMPPException e) {
e.printStackTrace();
}
尝试这个,让我知道它是否适合你..
答案 1 :(得分:0)
取消此链接.. XMPPTCPConnectionConfiguration
答案 2 :(得分:0)
您必须将要尝试访问的服务器的证书添加到JDK信任库,或者禁用主机名验证,如上所示。