gpt4 book ai didi

java - 为什么我的 HTTPS 文件下载会损坏 .zip 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:21 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从 Internet 下载 zip 文件:

public void getFile(String updateURL) throws Exception {

URL url = new URL(updateURL);
HttpURLConnection httpsConn = (HttpURLConnection) url.openConnection();
httpsConn.setRequestMethod("GET");

TrustModifier.relaxHostChecking(httpsConn);

int responseCode = httpsConn.getResponseCode();

if (responseCode == HttpsURLConnection.HTTP_OK) {

String fileName = "fileFromNet";

try (FileOutputStream outputStream = new FileOutputStream(fileName)) {
ReadableByteChannel rbc = Channels.newChannel(httpsConn.getInputStream());
outputStream.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}

}
httpsConn.disconnect();
}

TrustModifier 是用来解决“信任问题”的类:http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java/

上面的代码适用于通过纯 http 提供的 zip 文件或通过 https 公开的非压缩文件,但如果我尝试下载通过 https 端点公开的 zip 文件,则只会下载一小部分原始文件。我已经使用来自互联网的不同下载链接进行了测试,并且总是得到相同的结果。

有人知道我在这里做错了什么吗?

谢谢。

最佳答案

transferFrom() 必须在循环中调用,直到传输完成,在这种情况下,您唯一知道的方法是将 transferFrom() 的返回值相加 直到它们等于 HTTP 响应的 Content-length。

关于java - 为什么我的 HTTPS 文件下载会损坏 .zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35214350/

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