Hi,
My app was working great and used to get data from TMDB.However, from past few days, I am unable to fetch the data.
Platform : Android Device : Moto G3
Getting the following log:
Get: https://api.themoviedb.org/3/movie/now_playing?api_key=${KEY}&page=1
HTTP FAILED: javax.net.ssl.SSLHandshakeException: Connection closed by peer
Complete logs:
javax.net.ssl.SSLHandshakeException: Connection closed by peer
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:318)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:282)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:167)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
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:126)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:213)
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.execute(RealCall.java:77)
at com.google.firebase.perf.network.FirebasePerfOkHttpClient.execute(Unknown Source)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:42)
at io.reactivex.Observable.subscribe(Observable.java:12030)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:12030)
at io.reactivex.internal.operators.observable.ObservableObserveOn.subscribeActual(ObservableObserveOn.java:45)
at io.reactivex.Observable.subscribe(Observable.java:12030)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:579)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Can't find a movie or TV show? Login to create it.
Want to rate or add this item to a list?
Not a member?
Reply by Travis Bell
on May 5, 2019 at 1:08 PM
What version of TLS are you using? I suggest trying to make sure you are connecting over at least TLS 1.1 (but preferably TLS 1.2) and let me know if the problem is fixed.
Reply by RKing
on May 8, 2019 at 9:18 PM
@travisbell I am getting the same error. Tried with TLS 1.1 and 1.2 as well.
Android + OkHttp + Retrofit
Reply by Travis Bell
on May 8, 2019 at 9:26 PM
Ok, that's about all I had to suggest.
I don't know anything about OkHttp or Retrofit. I might suggest posting over on Stack Overflow as that's more of a programming board and have some users familiar with the technology.
Reply by RKing
on May 8, 2019 at 9:27 PM
Ohk @travisbell . Thanks for the support. I will post on StackOverflow.
Reply by RKing
on August 25, 2019 at 2:55 PM
Hi @travisbell , I am unable to connect to the server still from Android devices. I tried finding the solution it states the backend to update the certificates. Please look into the same.
Reply by Travis Bell
on August 26, 2019 at 5:03 PM
What version of Android are you using? I believe for Android 4.4 and earlier you will need to do some custom work to be able to connect to TLS 1.1 or higher. Here's an article that discusses this a bit: https://medium.com/tech-quizlet/working-with-tls-1-2-on-android-4-4-and-lower-f4f5205629a
Reply by RKing
on August 26, 2019 at 9:46 PM
I am using Android 6.0, Marshmallow.
However, I have tried making customisations earlier for TLS, but it didn't work.
Most threads on stackoverflow states that backed needs to update the SSL certificates in such scenarios.
Reply by RKing
on September 23, 2019 at 7:34 AM
Hi @travisbell ,
The APIs are working now. No more SSL Handshake Exceptions for me. P.S: There was no change made from my side (for android).
Reply by Travis Bell
on September 24, 2019 at 4:03 PM
Hey @RKing I haven't made any changes and TLS 1.1 minimum is still required. Not sure what changed...