Ich verwende java.net.URL.openStream()
, um auf eine HTTPS-Ressource zuzugreifen. Der zurückgegebene Stream ist für einige URLs unvollständig: Für das Beispiel unten ergibt sich eine Byte-Datei von 1.105.724 Byte, während dieselbe URL, auf die von einem Browser aus zugegriffen wird, eine 5.755.858 Byte-Datei liefert (selbst wenn "Content-Encoding
" deaktiviert wird).Unvollständig java.net.URL.openStream() stream
Und es wirft nicht einmal eine Ausnahme.
Was fehlt mir?
import static java.nio.file.Files.copy;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Paths;
public class Test {
public static void main(String... args) throws IOException {
try (final InputStream in = new URL(
"https://upload.wikimedia.org/wikipedia/commons/9/95/Germany_%28orthographic_projection%29.svg").openStream()) {
copy(in, Paths.get("germany.svg"));
}
}
}
bearbeiten
ich diesen Code viele Male getestet haben (in verschiedenen Netzwerken, aber immer auf JRE 1.8.0_60/Mac OS X 10.11.4), und es ist manchmal plötzlich beginnen“zu Arbeit".
Wechseln zu einer anderen meiner problematischen URLs (z. B. "https://upload.wikimedia.org/wikipedia/commons/c/ce/Andorra_in_Europe_%28zoomed%29.svg"
) ermöglicht es mir, das Problem zu reproduzieren.
Bedeutet dies, dass es sich um ein Serverproblem handelt? Ich habe es noch nie in einem Browser gesehen.
Hmmm, wie hast du das 5.755.858 Byte-Datei messen? Das bekomme ich nicht, wenn ich die Datei manuell herunterlade und die Größe überprüfe. – Tunaki
@Tunaki Ich bekomme die gleiche Größe wie OP, wenn ich es manuell aus dem Navigator oder aus der Locke –
Funktioniert gut für mich ... Sind Sie sicher, Sie sind in einem stabilen Netzwerk? –