Heim >Java >javaLernprogramm >Einige Ideen, warum getContentLength() beim JAVA-Download immer -1 ist
如果Content Length 在头文件中没有描述 |
Es gibt noch keine Lösung
如果Content Long在头文件中有描述 |
Option 1:
Als Browser tarnen
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");
Proxy zum Code hinzufügen
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:
Fügen Sie die folgenden Attribute hinzu, um die GZIP-Komprimierung des Servers zu verhindern:
Java Doc enthält eine Beschreibung dazu:
Standardmäßig verlangt diese Implementierung von HttpURLConnection
, dass Server die gzip-Komprimierung verwenden. Da getContentLength()
die Anzahl der übertragenen Bytes zurückgibt, können Sie diese Methode nicht verwenden, um vorherzusagen, wie viele Bytes von getInputStream()
gelesen werden können streamen, bis es erschöpft ist: wennread()
-1 zurückgibt
Das obige ist der detaillierte Inhalt vonEinige Ideen, warum getContentLength() beim JAVA-Download immer -1 ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!