Herunterladen Sie einen Teil einer Datei mithilfe von HTTP-Anfragen
Ich versuche, laden Sie einen Teil einer PDF-Datei (nur für Testzwecke "Range" - header). Ich ersuchte die server für die bytes (0-24) in Reichweite, aber immer noch, anstatt sich den ersten 25 bytes (ein Teil) aus dem Inhalt, ich bin immer die volle Länge Inhalte. Außerdem, anstatt sich-response-code als 206 (partial content), ich bin immer in der response-code 200.
Hier ist mein code:
public static void main(String a[]) {
try {
URL url = new URL("http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-windows-x64.exe?AuthParam=1372502269_599691fc0025a1f2da7723b644f44ece");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Range", "Bytes=0-24");
urlConnection.connect();
System.out.println("Respnse Code: " + urlConnection.getResponseCode());
System.out.println("Content-Length: " + urlConnection.getContentLengthLong());
InputStream inputStream = urlConnection.getInputStream();
long size = 0;
while(inputStream.read() != -1 )
size++;
System.out.println("Downloaded Size: " + size);
}catch(MalformedURLException mue) {
mue.printStackTrace();
}catch(IOException ioe) {
ioe.printStackTrace();
}
}
Hier ist die Ausgabe:
Respnse Code: 200
Content-Length: 94973848
Downloaded Size: 94973848
Vielen Dank im Voraus.
- Können Sie überprüfen, ob das Programm heruntergeladen werden können, reicht tatsächlich herunterladen einer Reihe? (starten Sie wget, Strg+C ' Ing es, und starten Sie es erneut) Einige Server kann den Antrag ablehnen, wie Sie ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Folgendes:
mit:
als pro spec 14.35.1 Byte Reicht
Ähnlich, wie pro die Spezifikation 14.5 Accept-Ranges, können Sie auch überprüfen, ob Ihr server tatsächlich unterstützt teilweise Inhalte abrufen oder nicht die Verwendung der folgenden:
Accept-Ranges
header überhaupt.Wenn der server es unterstützt (und HTTP 1.1-Server sollte), nur dann können Sie eine Reihe von Anfragen...
und wenn alles, was Sie tun möchten, ist, dann senden Sie einfach ein HEAD-request anstelle von GET-request. Gleicher Header, gleiche alles nur "KOPF" statt "BEKOMMEN". Wenn Sie erhalten eine 206-Antwort, werden Sie wissen, Spektrum unterstützt wird, und andernfalls erhalten Sie eine 200 Antwort.
"HEAD"
Anfrage und bekam Antwort-code 200. Dies muss bedeuten, dass der server nicht unterstützt"Resuming"
downloads feature. Dann würde ich gerne wissen, wie ich in der Lage, "pause" und "resume" diese Datei herunterladen, die in anderen download-Manager. Es wäre auch toll, wenn Sie könnte vermuten lassen, alle http-links, deren Inhalte-Teil kann heruntergeladen werden von dieser Methode.Müssen Sie Verbindung zur url " vor setRequestProperty
Ändern:
Zu:
Denke ich, die richtige überschrift ist "Inhalt-Bereich", nicht "Reihe", wie Sie mit Hilfe.
"Content-Range"
auch; immer diesame output