gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:31:50 25 4
gpt4 key购买 nike

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

而且它甚至不会抛出异常。

我错过了什么?

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

编辑

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

但是,切换到我的另一个有问题的 URL(例如 "https://upload.wikimedia.org/wikipedia/commons/c/ce/Andorra_in_Europe_%28zoomed%29.svg")启用我重现这个问题。

这是否意味着它是服务器问题?不过,我从未在浏览器上看到过它。

最佳答案

它工作正常。

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

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

关于java - 不完整的 java.net.URL.openStream() 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com