[英]ejabberd and smack handshake fails
I run ejabberd in my cloud server and I think it is working well because I can connect to it from my PC using pidgin.(ejabberdctl connected-users-number answers 1 when I connect and 0 when I'm offline.) 我在我的云服务器上运行ejabberd,我认为它运行良好,因为我可以使用pidgin从我的PC连接到它。(ejabberdctl connected-users-number在我连接时回答1,在我离线时回答0。)
Now I try to connect to if from my android application using the smack package, and I get IOException : 现在我尝试使用smack包从我的android应用程序连接到if,并且我得到IOException:
javax.net.ssl.SSLHandshakeException: Handshake failed
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb897c858: Failure in SSL library, usually a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:795 0xacf6bf89:0x00000000)
W/System.err﹕ at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err﹕ at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:318)
this is my Application code: 这是我的应用程序代码:
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setConnectTimeout(30000);
config.setUsernameAndPassword(username + "@" + service, password);
config.setServiceName(service);
config.setHost(host);
config.setCompressionEnabled(true);
config.setPort(port);
config.setDebuggerEnabled(true);
config.setSocketFactory(SSLSocketFactory.getDefault());
SmackConfiguration.DEBUG = true;
try {
TLSUtils.acceptAllCertificates(config);
XMPPTCPConnection connection = new XMPPTCPConnection(config.build());
connection.connect();
connection.login();
} catch (SmackException ex) {
ex.printStackTrace();
chatClient.setConnection(null);
} catch(IOException ex){
ex.printStackTrace();
chatClient.setConnection(null);
} catch ( XMPPException ex){
ex.printStackTrace();
chatClient.setConnection(null);
}catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
chatClient.setConnection(null);
}catch (KeyManagementException ex) {
ex.printStackTrace();
chatClient.setConnection(null);
}
return null;
I'd really appreciate any help!! 我真的很感激任何帮助!!
Disable SSL if SSL isn't enabled in your server. 如果服务器中未启用SSL,请禁用SSL。 To disable,
要禁用,
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.