Retrofit / OkHttp在响应时崩溃

时间:2017-05-18 11:26:24

标签: android retrofit2 okhttp okhttp3

我最近开始遇到Retrofit / OkHttp的问题。每当应用程序执行请求时,它都会崩溃并显示错误:

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) 

我不知道为什么要这样做。服务器返回200,返回的正文包含有效的JSON。更奇怪的是,代码中没有任何改变,说我可能已经引入了一个bug或类似的东西。它工作正常,突然之间应用程序崩溃的所有请求。

有谁知道为什么会这样?

可能值得一提的是,在我将请求发送到服务器之前,我在拦截器内加密了主体。但是我不认为这是一个问题,因为服务器返回正确的响应。

谢谢:)

1 个答案:

答案 0 :(得分:4)

下面的类名在您的堆栈跟踪中。我的猜测是,这是Android studio的新OkHttp探查器中的一个错误。你应该向他们报告一个错误;他们会及时解决。

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