利用java下载实现getContentLength()一直为-1的方法

本篇文章为大家展示了利用java下载实现getContentLength()一直为-1的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

安化网站建设公司成都创新互联公司,安化网站设计制作,有大型网站制作公司丰富经验。已为安化1000多家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的安化做网站的公司定做!

如果Content Length 在头文件中没有描述

利用java下载实现getContentLength()一直为-1的方法

暂时还没有解决方案

如果Content Long在头文件中有描述

利用java下载实现getContentLength()一直为-1的方法

方案一:

伪装成浏览器

conn.setRequestProperty("User-Agent", " Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); 

代码中加入代理

String host = "127.0.0.1";  
   String port = "8888";  
   setProxy(host, port); 
   public static void setProxy(String host, String port) {  
  System.setProperty("proxySet", "true");  
  System.setProperty("proxyHost", host);  
  System.setProperty("proxyPort", port);  
} 

方案二:

加入以下属性,让服务器不要gzip方式压缩:

Java Doc 有对此的描述:

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. 

conn.setRequestProperty("Accept-Encoding", "identity");

上述内容就是利用java下载实现getContentLength()一直为-1的方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前题目:利用java下载实现getContentLength()一直为-1的方法
文章位置:http://scyanting.com/article/posjes.html