J'essaie d'enregistrer un fichier à partir d'une URL en utilisant outputtream. L'URL est sécurisée par https. Je suis une erreur lorsque je tente d'obtenir le fichier comme suitComment enregistrer le fichier depuis l'URL HTTPS dans 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
Supposons que je veux ouvrir le fichier à partir de cette URL
https://www.filepicker.io/api/file/KW9EJhYtS6y48Whm2S6D?signature=4098f262b9dba23e4766ce127353aaf4f37fde0fd726d164d944e031fd862c18&policy=eyJoYW5kbGUiOiJLVzlFSmhZdFM2eTQ4V2htMlM2RCIsImV4cGlyeSI6MTUwODE0MTUwNH0=
donc je fais quelque chose comme:
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();
}
Le résultat est que rien ne se passe dans le floder dédié car l'erreur est visible. Comment puis-je obtenir le fichier à partir de l'URL HTTPS?
Merci beaucoup pour votre réponse, @BalusC. J'ai une question sur le certificat SSL. Ici, vous m'avez dit que le code accepterait tous les certificats SSL. Cela signifie qu'il fera confiance au faux certificat ou au certificat non vérifié, n'est-ce pas? Merci encore pour votre suggestion supplémentaire sur l'autre problème dans mon code. – Takumi
C'est correct. – BalusC
Je voudrais demander une information supplémentaire, @BalusC Si je veux faire confiance seulement le certificat spécifique. Pourriez-vous s'il vous plaît me suggérer comment faire cela? – Takumi