小编Ell*_*tel的帖子

当我尝试记录网络响应时,OKHttp抛出非法状态异常

我在我的OkHttp客户端上放了以下拦截器:

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;
    }
    });
Run Code Online (Sandbox Code Playgroud)

但是,这对于Retrofit 2来说并不是很好.看起来你只能从响应中读取一次流,这可能是造成异常的原因.我在想改造试图解析日志已经解析过的流.那我如何得到回应呢?我正在尝试调试一个非常讨厌和奇怪的格式错误的json异常.

这是异常堆栈跟踪:

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 …
Run Code Online (Sandbox Code Playgroud)

java android retrofit okhttp

16
推荐指数
4
解决办法
1万
查看次数

标签 统计

android ×1

java ×1

okhttp ×1

retrofit ×1