2017-12-12 29 views
0

몇 달 전부터 retrofit2을 통합했습니다. 어제까지 아무 문제가 사용자와 없었다 (화웨이, 모델 MHA-L29, 안드로이드 7.0) :Android : okhttp3> 예기치 않은 TLS 버전 : NONE

Gradle에서
Fatal Exception: java.lang.IllegalArgumentException: Unexpected TLS version: NONE 
     at okhttp3.TlsVersion.forJavaName(TlsVersion.java:53) 
     at okhttp3.Handshake.get(Handshake.java:56) 
     at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:300) 
     at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:268) 
     at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160) 
     at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:256) 
     at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:134) 
     at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:113) 
     at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 
     at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 
     at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 
     at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 
     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 
     at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) 
     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) 
     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
     at java.lang.Thread.run(Thread.java:776) 

:

구현 'com.squareup.retrofit2 : 개조 : 2.3 .0 '

이 충돌에 대한 아이디어가 있습니까? Retrofit와 (과) 연결된 링크가 있습니까? 내 GradleOkHttp library을 추가하지 않았습니다.해야합니까?

+0

OkHttp를 호출 할 때 코드를 공유합니까? –

+0

다른 기기에서 잘 작동합니까? –

+0

@MiteshVanaliya : 예 – anthony

답변

0

TLS 구성을 제공하여이 문제를 해결할 수 있습니까? 작동 여부를 잘 모르겠습니다. here

ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) 
     .tlsVersions(TlsVersion.TLS_1_2) 
     .cipherSuites(
       CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, 
       CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 
       CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) 
     .build(); 

OkHttpClient client = new OkHttpClient.Builder() 
     .connectionSpecs(Collections.singletonList(spec)) 
     .build(); 

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(BASE_URL) 
     .client(client) 
     .build(); 
+0

기본적으로 Okhttp는 MODERN_TLS를 사용합니다. – anthony

+0

나는 그것을했다, 그러나 때때로이 충돌은 아직 나타난다. – anthony