异常分析:java.lang.IllegalArgumentException: byteCount < 0: -1-----byteCount < 0: -1

问题:

今天调试网络请求时,logcat显示一个异常信息:

java.lang.IllegalArgumentException: byteCount < 0: -1-----byteCount < 0: -1

据分析,是使用Retrofit+OkHttp进行网络请求时,拦截器拦截请求输出日志时报错。

关键代码为:

ResponseBody rb = response.peekBody(body.contentLength());

其中body.contentLength() = -1;

查资料发现,服务器会随机的对下发的资源做GZip操作,而此时就没有相应的content-length

解决方案:

方案1:在Header中加入:Request.Builder().addHeader("Accept-Encoding", "identity")

方案2:判断body.contentLength的长度。

ResponseBody rb = response.peekBody(body.contentLength() >0 ? body.contentLength() : Integer.MAX_VALUE);

你可能感兴趣的:(异常分析:java.lang.IllegalArgumentException: byteCount < 0: -1-----byteCount < 0: -1)