不完整的java.net.URL.openStream()流

时间:2016-05-10 16:17:22

标签: java https io

我正在使用java.net.URL.openStream()来访问HTTPS资源。对于某些URL,返回的流不完整:对于下面的示例,它产生1,105,724个字节文件,而从浏览器访问的相同URL产生5,755,858个字节文件(即使"禁用" {{1} })。

它甚至没有例外。

我错过了什么?

Content-Encoding

修改

我已经多次测试过这段代码(在不同的网络上,但总是在JRE 1.8.0_60 / Mac OS X 10.11.4上),有时它会突然开始工作&#34;。< / p>

但是,切换到另一个有问题的网址(例如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")); } } } )可以让我重现这个问题。

这是否意味着它是服务器问题?我从来没有在浏览器上看过它。

1 个答案:

答案 0 :(得分:-2)

它工作正常。

正如其他人所说,您的网络可能存在问题,请尝试连接到其他网络。

package test;

import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

public class TestMain2 {
    public static void main(String[] args) {
        System.out.println("Started");

        try (final InputStream in = new URL(
                "https://upload.wikimedia.org/wikipedia/commons/9/95/Germany_%28orthographic_projection%29.svg")
                        .openStream()) {

            Path outputFile = Paths.get("test.svg");

            Files.copy(in, outputFile, StandardCopyOption.REPLACE_EXISTING);

            System.out.println("Output file size : " + outputFile.toFile().length());

            System.out.println("Finished");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

<强>输出

Started
Output file size : 5755858
Finished