I put the following interceptor on my OkHttp client:
httpClient.addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Response response = chain.proceed(chain.request()); Log.d("Response", response.body().string()); return response; } });
However, this isn't playing nice with Retrofit 2. It seems that you can only read the stream from the response once and that might be what is causing the exception. I'm thinking retrofit is trying to parse the stream which the log already parsed. How then do I get my hands on the response? I'm currently trying to debug a very nasty and strange malformed json exception.
This is the exception stack trace:
07 - 28 10: 58: 21.575 22401 - 22529 / REDACTED E / AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher Process: REDACTED, PID: 22401 java.lang.IllegalStateException: closed at okhttp3.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java: 378) at okio.Buffer.writeAll(Buffer.java: 956) at okio.RealBufferedSource.readByteArray(RealBufferedSource.java: 92) at okhttp3.ResponseBody.bytes(ResponseBody.java: 83) at okhttp3.ResponseBody.string(ResponseBody.java: 109) at REDACTED.ServiceGenerator$2.intercept(ServiceGenerator.java: 90) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java: 187) at REDACTED.ServiceGenerator$2.intercept(ServiceGenerator.java: 89) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java: 187) at REDACTED.ServiceGenerator$2.intercept(ServiceGenerator.java: 89) at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java: 187) at REDACTED.ServiceGenerator$2.intercept(ServiceGenerator.java: 89) 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: 32) 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)
I see that there are multiple interceptors in the stack but I only ever explicitly add the one, which is the on that is throwing the exception.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With