2016-04-27 6 views
10

Ho riscontrato un problema con questo errore quando eseguo la sincronizzazione sulla mia app. Il problema principale è che lo stesso codice funziona su dispositivo Android 6.0.1, ma il dispositivo 4.4.2, sto ottenendo questo errore:javax.net.ssl.SSLException: Connessione chiusa dal peer sul dispositivo 4.4.2 (funziona su 6.0.1)

javax.net.ssl.SSLException: Connection closed by peer 
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:406) 
at okhttp3.internal.io.RealConnection.connectTls(RealConnection.java:188) 
at okhttp3.internal.io.RealConnection.connectSocket(RealConnection.java:145) 
at okhttp3.internal.io.RealConnection.connect(RealConnection.java:108) 
at okhttp3.internal.http.StreamAllocation.findConnection(StreamAllocation.java:188) 
at okhttp3.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:127) 
at okhttp3.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) 
at okhttp3.internal.http.HttpEngine.connect(HttpEngine.java:289) 
at okhttp3.internal.http.HttpEngine.sendRequest(HttpEngine.java:241) 
at okhttp3.RealCall.getResponse(RealCall.java:240) 
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:198) 
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:203) 
at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187) 
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160) 
at okhttp3.RealCall.access$100(RealCall.java:30) 
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127) 
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:33) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
at java.lang.Thread.run(Thread.java:841) 

dove sono in grado di richiedere i dati dal server.

Se avete bisogno di più dati, sentitevi liberi di chiedere. Grazie.

+1

Date un'occhiata alla risposta fornita [qui] (http://stackoverflow.com/a/ 33567745/3202633) di Robert – am110787

+0

Grazie, questo mi ha guidato alla soluzione! – robigroza

risposta

4

Qui è necessario forzare il protocollo TLS 1.2, in base al collegamento this qui.

L'unica cosa che avevo bisogno di correggere qui è quello di forzare TLS 1.2 protocollo direttamente, in questo modo:

private class NoSSLv3SSLSocket extends DelegateSSLSocket { 

    private NoSSLv3SSLSocket(SSLSocket delegate) { 
     super(delegate); 
    } 

    @Override 
    public void setEnabledProtocols(String[] protocols) { 
     super.setEnabledProtocols(new String[]{"TLSv1.2"}); // force to use only TLSv1.2 here 
    } 
} 
+0

@DavidCheung Sentiti libero di pubblicare la tua risposta. – Michael

Problemi correlati