Rumah > Java > javaTutorial > teks badan

JAVA下载中getContentLength()一直为-1的一些思路

巴扎黑
Lepaskan: 2017-06-26 10:21:24
asal
1856 orang telah melayarinya
如果Content Length 在头文件中没有描述

暂时还没有解决方案

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

 


方案一:

 伪装成浏览器

 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");
Salin selepas log masuk

代码中加入代理

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);    
}
Salin selepas log masuk

方案二:

加入以下属性,让服务器不要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");
Salin selepas log masuk

 

Atas ialah kandungan terperinci JAVA下载中getContentLength()一直为-1的一些思路. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan