我正在使用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"));
}
}
}
)可以让我重现这个问题。
这是否意味着它是服务器问题?我从来没有在浏览器上看过它。
答案 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