解决okhttp 报java.lang.IllegalStateException: closed,java.lang.IllegalStateException: closed,原因为OkHttp请求回调中response.body().string()只能有效调用一次,我们可以把它保存起来 传递给下一个调用方
在调用了response.body().string()方法之后,response中的流会被关闭,我们需要创建出一个新的response给应用层处理。代码如下:
@Override
public Response intercept(Chain chain) throws IOException
{
Request request = chain.request();
logForRequest(request);
1、注意
Response response = chain.proceed(request);
MediaType mediaType = response.body().contentType();
2、注意
String content= response.body().string();
3、注意
return response.newBuilder()
.body(ResponseBody.create(mediaType, string))
.build();
4、注意
// return logForResponse(response);
如果上述2的地方调用了response.body().string()之后,response中的流会被关闭,4的地方不能直接返回1处的response,而是需要像3处重新创建出一个新的response给应用层处理。