牛骨文教育服务平台(让学习变的简单)
博文笔记

getContentLength()为-1 解决方法

创建时间:2014-05-09 投稿人: 浏览次数:1221

最近在做一个下载平台,用到多线程下载和断点续传功能,当我获取文件大小getContentLength()的时候,返回结果是-1。文件下载是没问题的,但是大小却不正常,用模拟器获取getContentLength()是正常的,但是真机却返回-1了,模拟器是低版本运行,于是我就猜想是版本问题,果然2.2版本以上HttpURLConnection跟服务交互采用了"gzip"压缩:参考api:By default, this implementation of HttpURLConnection requests that servers use gzip compression. Since getContentLength() returns the number of bytes transmitted, you cannot use that method to predict how many bytes can be read from getInputStream(). Instead, read that stream until it is exhausted: whenread() returns -1. 

取消办法这http request的head中设置如下参数即可:connection.setRequestProperty("Accept-Encoding", "identity"); 
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。