Это все, и проблем больше нет.

я возникла странная проблема, из-за которой меня постоянно бросает модернизация

«Рукопожатие SSL прервано: ssl = 0x618d9c18: ошибка ввода-вывода во время системного вызова, сброс соединения по пиру»

в kitkat, тогда как тот же код работает нормально в устройствах lollipop. Я использую клиент OkHttpClient, как показано ниже

public OkHttpClient getUnsafeOkHttpClient() {
    try {
        final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            @Override
            public void checkClientTrusted(
                    java.security.cert.X509Certificate[] chain,
                    String authType) {
            }
            @Override
            public void checkServerTrusted(
                    java.security.cert.X509Certificate[] chain,
                    String authType) {
            }
            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return new java.security.cert.X509Certificate[0];
            }
        } };

        int cacheSize = 10 * 1024 * 1024; // 10 MB
        Cache cache = new Cache(getCacheDir(), cacheSize);
        final SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        sslContext.init(null, trustAllCerts,
                new java.security.SecureRandom());
        final SSLSocketFactory sslSocketFactory = sslContext
                .getSocketFactory();
        OkHttpClient okHttpClient = new OkHttpClient();
        okHttpClient = okHttpClient.newBuilder()
                .cache(cache)
                .sslSocketFactory(sslSocketFactory)
                .hostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER).build();
        return okHttpClient;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

}

Я использую этот клиент в модернизации, как это

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(URL)
            .client(getUnsafeOkHttpClient())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

РЕДАКТИРОВАТЬ: добавлениеgetUnsafeOkHttpClient() здесь не действует, и вообще не рекомендуется обходить проверку ssl с помощьюgetUnsafeOkHttpClient()

К вашему сведению: проблема заключалась в том, что конечная точка API поддерживает толькоTLS 1.2 который был отключен по умолчанию на устройствах Android16<device<20 , Таким образом, для16<device<20создать кастомSSLSocketFactory

Ответы на вопрос(5)

Ваш ответ на вопрос