如果服务器使用了压缩编码(如gzip或deflate),则无法直接获取压缩后的内容长度,getContentLength()方法将返回-1。 连接未建立或已关闭:如果在调用getContentLength()方法之前,连接未能成功建立或已经关闭,则无法获取内容长度,方法将返回-1。 在处理这种情况时,可以考虑使用其他方法来获取内容长度或处理响应数据。例如,...
文件下载是没问题的,但是大小却不正常,用模拟器获取getContentLength()是正常的,但是真机却返回-1了,模拟器是低版本运行,于是我就猜想是版本问题,果然2.2版本以上HttpURLConnection跟服务交互采用了"gzip"压缩:参考api:By default, this implementation ofHttpURLConnectionrequests that servers use gzip compression. Si...
似乎是说,在默认情况下,HttpURLConnection 使用 gzip方式获取,文件getContentLength()这个方法,每次read完成后可以获得,当前已经传送了多少数据,而不能用这个方法获取 需要传送多少字节的内容,当read() 返回 -1时,读取完成,由于这个压缩后的总长度我无法获取,那么进度条就没法计算值了。 要取得长度则,要求http请求不...
文件下载是没问题的,但是大小却不正常,用模拟器获取getContentLength()是正常的,但是真机却返回-1了,模拟器是低版本运行,于是我就猜想是版本问题,果然2.2版本以上HttpURLConnection跟服务交互采用了"gzip"压缩:参考api:By default, this implementation ofHttpURLConnectionrequests that servers use gzip compression. Si...
基于Java 下载中 getContentLength() 一直为 -1 的一些思路 getContentLength() 方法是 HttpURLConnection 类中的一个方法,它返回从服务器接收到的响应体的大小,但是在某些情况下,该方法可能返回 -1,这意味着无法确定响应体的大小。 在Java 中,getContentLength() 方法的返回值可能为 -1 的原因有多种,以下是...
获取远程文件大小 网上给的方案大部分是下面这条,但是会出现getContentLength()为-1的情况,搜索结果大部分为 conn.setRequestProperty("Accept-Encoding", "identity"); 这条建议,但无效果 URL url=newURL(urlStr);HttpURLConnection conn=(HttpURLConnection)url1.openConnection();conn.setRequestProperty("Accept...
JavaDoc API没有。其中fileSystem 是一个IFileSystem对象,IFileSySTEM是java没有公开的一个类,JavaDoc API中没有;fd是一个FileDescriptor对象,即文件描述符。说明这句代码是通过文件描述符获取文件的总大小,而并不是事先将磁盘上的文件数据全部读入流中,再获取文件总大小。
(progress); } //pd.setProgress(295); fos.close(); bis.close(); //conn.disconnect(); is.close(); returnfile; }else{ returnnull; } } 在conn.getContentLength()这里的输出值永远是-1,但conn.getResponseCode()是200,文件也下载成功了,就是长度获取不到,长度一直是-1,释放资源吧,我应该也是...
conn.setRequestProperty("Accept-Encoding","identity"); AI代码助手复制代码 上述内容就是利用java下载实现getContentLength()一直为-1的方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
我也遇到过这个问题今天解决了,我自己做了一个上传下载,检测 有更新 就下载,无更新就不下载 每次要对比已下载的文件长度 和 服务器的文件长度是否相同 servlet 中 response.setContentLength(fis.available()); 这行代码没设置 设置之后 就好 conn.getcontentLength 就能够取到长度了 ...