Я пытаюсь сохранить файл из URL с помощью выходного потока. URL-адрес защищен https. Таким образом я получил некоторую ошибку, когда я пытаюсь получить файл в виде следующейКак сохранить файл с HTTPS-url в JAVA?
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at java.net.URL.openStream(Unknown Source)
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 60 more
Предположим, что я хочу, чтобы открыть файл из этого URL
https://www.filepicker.io/api/file/KW9EJhYtS6y48Whm2S6D?signature=4098f262b9dba23e4766ce127353aaf4f37fde0fd726d164d944e031fd862c18&policy=eyJoYW5kbGUiOiJLVzlFSmhZdFM2eTQ4V2htMlM2RCIsImV4cGlyeSI6MTUwODE0MTUwNH0=
Так что я сделать что-то вроде:
try{
URL URL = new URL('https://www.filepicker.io/api/file/KW9EJhYtS6y48Whm2S6D?signature=4098f262b9dba23e4766ce127353aaf4f37fde0fd726d164d944e031fd862c18&policy=eyJoYW5kbGUiOiJLVzlFSmhZdFM2eTQ4V2htMlM2RCIsImV4cGlyeSI6MTUwODE0MTUwNH0=');
String = path = "D://download/";
InputStream ins = url.openStream();
OutputStream ous = new FileOutputStream(path);
final byte[] b = new byte[2048];
int length;
while ((length = inputStream.read(b)) != -1) {
ous.write(b, 0, length);
}
ins.close();
ous.close();
}
В результате ничего не происходит в выделенном флевере, потому что появляется ошибка. Как я могу получить файл с HTTPS-url?
Большое вам спасибо за ваш ответ, @BalusC. У меня есть один вопрос о SSL-сертификате. Здесь вы сказали мне, что код примет все SSL-сертификаты. Это означает, что он будет доверять поддельному сертификату или непроверенным сертификатом, не так ли? Еще раз спасибо за ваше дополнительное предложение о дальнейшей проблеме в моем коде. – Takumi
Это правильно. – BalusC
Я хотел бы попросить дополнительную информацию, @BalusC Если я хочу доверять только конкретному сертификату. Не могли бы вы предложить мне, как это сделать? – Takumi