鏈接: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();