1.我使用的是https://github.com/socketio/socket.io-client-java github开源的socket库
2.代码如下
private class MyHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
private class MyTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
//这里不能返回null 否则会报空指针错误
X509Certificate[] x509Certificates = new X509Certificate[0];
return x509Certificates;
}
}
TrustManager[] trustAllCerts= new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
} };
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new SecureRandom());
Tls12SocketFactory socketFactory = new Tls12SocketFactory(sc.getSocketFactory());
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.hostnameVerifier(new MyHostnameVerifier())
.sslSocketFactory(socketFactory, new MyTrustManager())
.build();
// default settings for all sockets
IO.setDefaultOkHttpWebSocketFactory(okHttpClient);
IO.setDefaultOkHttpCallFactory(okHttpClient);
// set as an option
IO.Options opts = new IO.Options();
opts.callFactory = okHttpClient;
opts.webSocketFactory = okHttpClient;
Socket mSocket = IO.socket(SocketUri, opts);
网友评论