Tudor S.
Tudor S.

Reputation: 819

Retrofit/OkHttp crashes on response

I've recently started having a problem with Retrofit/OkHttp. Whenever the app performs a request it crashes with the error:

05-18 12:13:51.908 E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
                                     Process: <<APP PACKAGE NAME>>, PID: 10264
                                     java.lang.reflect.UndeclaredThrowableException
                                         at $Proxy0.intercept(Unknown Source)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                                         at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                                         at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                                         at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                                         at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                                         at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
                                         at okhttp3.RealCall$AsyncCall.execute(RealCall.java:135)
                                         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:761)
                                      Caused by: java.lang.reflect.InvocationTargetException
                                         at java.lang.reflect.Method.invoke(Native Method)
                                         at com.android.tools.profiler.support.network.OkHttpInterceptorHandler.trackResponseBody(OkHttpInterceptorHandler.java:58)
                                         at com.android.tools.profiler.support.network.OkHttpInterceptorHandler.invoke(OkHttpInterceptorHandler.java:39)
                                         at java.lang.reflect.Proxy.invoke(Proxy.java:813)
                                         at $Proxy0.intercept(Unknown Source) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) 
                                         at okhttp3.RealCall$AsyncCall.execute(RealCall.java:135) 
                                         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:761) 
                                      Caused by: java.lang.IllegalArgumentException: byteCount < 0: -1
                                         at okio.RealBufferedSource.request(RealBufferedSource.java:64)
                                         at java.lang.reflect.Method.invoke(Native Method) 
                                         at com.android.tools.profiler.support.network.OkHttpInterceptorHandler.trackResponseBody(OkHttpInterceptorHandler.java:58) 
                                         at com.android.tools.profiler.support.network.OkHttpInterceptorHandler.invoke(OkHttpInterceptorHandler.java:39) 
                                         at java.lang.reflect.Proxy.invoke(Proxy.java:813) 
                                         at $Proxy0.intercept(Unknown Source) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) 
                                         at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) 
                                         at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) 
                                         at okhttp3.RealCall$AsyncCall.execute(RealCall.java:135) 
                                         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:761) 

I've got no idea why it's doing that. The server returns 200, the returned body contains a valid JSON. The more bizarre part is that nothing changed in the code to say that I might have introduced a bug or something like that. It was working fine and all of a sudden all of the requests the app makes crash.

Does anyone have any idea why this might be happening?

Probably worth mentioning that before I send the request to the server I encrypt the body inside an interceptor. But I don't think that is a problem as the server returns the correct response.

Thanks :)

Upvotes: 2

Views: 1762

Answers (1)

Jesse Wilson
Jesse Wilson

Reputation: 40587

The class name below was in your stack trace. My guess is that it's a bug in Android studio’s new OkHttp profiler. You should report a bug to them; they’ll fix it promptly.

com.android.tools.profiler.support.network.OkHttpInterceptorHandler.

Upvotes: 4

Related Questions