ResponseBody内的bytes()、string()方法仅获取一次的通用解决方案

72 阅读1分钟

Android 获取Okhttp网络日志

由于ResponseBody内的bytes()、string()方法调用了closeQuietly方法,此方法会将ResponseBody内的数据源清除,所以仅获取一次内容。
解决方案:

BufferedSource source = body.source();
source.request(Long.MAX_VALUE); 
Buffer buffer = source.getBuffer();
Charset charset = Util.checkCharset(body.contentType());
String bodyString = buffer.clone().readString(charset);