Socket.IO android4.4 Connection

2019-03-08  本文已影响0人  sindorina

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);
上一篇 下一篇

猜你喜欢

热点阅读