我试图使用从互联网上下载的zip文件下面的代码:为什么我的HTTPS文件下载损坏.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/
上面的代码可以很好地用于提供zip文件通过普通的http或通过https公开的非压缩文件,但如果我尝试下载通过https端点公开的zip文件,只会下载原始文件的一小段。我已经测试了不同的互联网下载链接,总是得到相同的结果。
有没有人知道我在这里做错了什么?
谢谢。
谢谢你的回答。正如我所提到的,我的代码适用于所有情况,除非我尝试通过HTTPS下载ZIP文件。好吧,话虽如此,我不明白如何没有这个循环可能会导致zip文件的问题(通过https),而不是让我们说纯文本? – AleksB
你很幸运。只要你阅读简短的内容,它就会失败,这显然更有可能使用TLS。看到Javadoc。没有义务转移整个请求金额。 – EJP