问题
在使用okhttp
时,总出现异常:java.lang.IllegalStateException: closed
。
原因
一旦连续两次调用response.body().string()
,就会抛出该异常。
原来在okhttp
请求回调中,response.body().string()
只能有效调用一次,一旦调用数据流已经关闭了,再次调用就会提示closed。
解决方案
通过BufferedSource
获取
ResponseBody responseBody = response.body();
BufferedSource source = responseBody.source();
source.request(Long.MAX_VALUE);
Buffer buffer = source.buffer();
Charset UTF8 = Charset.forName("UTF-8");
String body = buffer.clone().readString(UTF8);
网友评论