SSL рукопожатие прервано, когда я вызываю API в Jellybean - PullRequest
0 голосов
/ 04 марта 2020

Я работаю над проектом уровня ниже 21 API, и когда я вызываю API, то на jellybean выдается сообщение об ошибке

SSL-рукопожатие прервано

Я пытаюсь многие методы, но только один метод работает на kitkat, как:

try {
                SSLContext.getInstance("TLSv1");
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            try {
                ProviderInstaller.installIfNeeded(context.getApplicationContext());
            } catch (GooglePlayServicesRepairableException e) {
                e.printStackTrace();
            } catch (GooglePlayServicesNotAvailableException e) {
                e.printStackTrace();
            }

, но этот метод не работает на Jellybean. Есть также другая ошибка, показывающая, что:

W / GooglePlayServicesUtil: сервисы Google Play устарели. Требуется 13400000, но найдено 9256030

Пожалуйста, предложите мне лучшее решение.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

вы можете попробовать таким образом

SSLContext mySSLContext = SSLContext.getInstance("TLS" );
 mySSLContext.init( null, trustAllCerts, new SecureRandom());

 OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .hostnameVerifier( myHostnameVerifier )
                    .sslSocketFactory( mySSLContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
                    .build();


HostnameVerifier myHostnameVerifier = new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

    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 {
        }
    }};
0 голосов
/ 04 марта 2020

Попробуйте изменить этот SSLContext.getInstance ("TLS")

...