okhttp的java.lang.IllegalStateException: closed

鏈接: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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章