Maison  >  Article  >  Java  >  Quelques idées sur les raisons pour lesquelles getContentLength() est toujours -1 dans le téléchargement JAVA

Quelques idées sur les raisons pour lesquelles getContentLength() est toujours -1 dans le téléchargement JAVA

巴扎黑
巴扎黑original
2017-06-26 10:21:241804parcourir
如果Content Length 在头文件中没有描述

Il n'y a pas encore de solution

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


Option 1 :

Déguiser en navigateur

 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");

Ajouter un proxy au code

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);    
}

Option 2 :

Ajoutez les attributs suivants pour empêcher le serveur de compresser gzip :

Java Doc en a une description :

Par défaut, cette implémentation de HttpURLConnection demande aux serveurs d'utiliser la compression gzip. Puisque getContentLength() renvoie le nombre d'octets transmis, vous ne pouvez pas utiliser cette méthode pour prédire combien d'octets peuvent être lus à partir de getInputStream(). stream jusqu'à épuisement : quandread() renvoie -1

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

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn