异常分析: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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容