java HttpClient 下载文件关于 content-length 为 -1 的问题

编程知识 更新时间:2023-04-05 07:07:33

     在系统使用 HttpClient 去服务器下载文件时,以 以下 代码为例,需要使用getContentLength判断content-length的长度

  response = getHttpClient().execute(httpPost);
            log.info("message:download请求状态, param:[status:{}]" ,response.getStatusLine().getStatusCode());
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

                InputStream input = response.getEntity().getContent();
                byte[] ss = ByteUtil.getBytes(input);
         

                if (response != null && response.getEntity().getContentLength() > 0) {
                    InputStream inputStream = response.getEntity().getContent();
                    int index = 0;
                    byte[] bytes = new byte[2048];
                    while ((index = inputStream.read(bytes)) != -1) {
                        out.write(bytes, 0, index);
                        out.flush();
                    }
                    inputStream.close();
                }
            } else {
                log.error("下载返回状态异常>>>>>>>>>>>>>>>>>>>>>>>>", response.getStatusLine().getStatusCode());
            }

 但是奇怪的是每次的Content-Length均为-1,原因在于header 是否 开启了Gzip压缩,一般情况下,关于任何图片文件,PDF文件,音乐文件等以及压缩过的文件都不需要做Gzip压缩处理,处理后反而内容更大,解析时间更长,这个时候Content-Length都是-1,所以需要加上

httpPost.setHeader("Accept-Encoding","identity"); 来取消Gzip压缩,Content-Length便是正常数据

 

 

更多推荐

java HttpClient 下载文件关于 content-length 为 -1 的问题

本文发布于:2023-04-05 07:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/d0ada7fdbd237293c96bca70bce45fa8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   HttpClient   java   content   length

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45452文章数
  • 14阅读数
  • 0评论数