链接:https://www.jianshu.com/p/8481a7710f31
错误:
java.lang.IllegalStateException: closed
1、原因为OkHttp请求回调中response.body().string()只能有效调用一次,而我使用了两次:
String result = response.body().string();
Log.e(TAG, "onResponse - " + response.body().string() );//打印时又使用了一次
当我们重写Interceptor的intercept方法时,如果是拦截了返回(Response),调用Response的string()方法如下图,原因是:response.body().string()只能请求一次,请求过后,就会关闭,再次调用response.body().string()就会报close异常。
解决方案:重新builder一个Response ,重新设置一个response。
String responseBody = response.body().string();
FLog.i("HttpLog", "TokenInterceptor responseBody=" + responseBody);
MediaType mediaType=response.body().contentType()
response = response.newBuilder()
.body(ResponseBody.create(mediaType, responseBody))
.build();