Impossible de télécharger une image d'une URL https

Résolu
Tiflo62 - Modifié le 30 avril 2020 à 18:06
 Tiflo62 - 4 mai 2020 à 10:40
Bonjour,

Je n'arrive à pas télécharger une image provenant d'une URL en https...

https://image-iris.canadiana.ca/iiif/2/oocihm.lac_reel_t18588%2Fdata%2Fsip%2Fdata%2Ffiles%2F0001.jpg/full/!2560,2560/90/default.jpg?token=eyJhbGciOiJIUzI1NiJ9.eyJkZXJpdmF0aXZlRmlsZXMiOiJvb2NpaG0ubGFjX3JlZWxfdDE4NTg4XFwvZGF0YVxcL3NpcFxcL2RhdGFcXC9maWxlc1xcLy4rXFwuKGpwZ3xqcDJ8dGlmKSIsImV4cCI6MTU4ODIzNjAxMSwiaWF0IjoxNTg4MTQ5NjExLCJpc3MiOiJDQVAifQ.NBu1QI72D8aoAnvcmXb6SiPY3PdSfSA0RZL-af9AI-A


Voici mon code qui me retourne une erreur de canal sécurisé SSL/TLS:

Try
            Dim i As Integer
            Dim wc As System.Net.WebClient = New System.Net.WebClient
            For i = 0 To DL_Listbox.Items.Count - 1
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                wc.DownloadFile(DL_Listbox.Items(i), PathTextBox.Text & "\page_" & i + 1 & ".jpg")
            Next

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try


Est-ce dû au token?
Je débute sur VB.

Merci d'avance pour votre aide!

;)

8 réponses

vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
30 avril 2020 à 18:10
Bonjour
Impossible de tester avec l'url canadienne car celle-ci est trop longue et ne tient pas entièrement dans le bandeau de retranscription de Codes-Sources
Pour ce faire il faudrait mettre cette url sur plusieurs lignes
2
Merci pour ton retour rapide.

J'ai bien importé System.Net dans l'entête de mon code pour la ligne sous le For mais le problème est bien là.

L'URL est visible complètement ?
Je la vois en entier sur smartphone.

https://image-gouda.canadiana.ca/iiif/2/oocihm.lac_reel_t18588%2Fdata%2Fsip%2Fdata%2Ffiles%2F0001.jpg/full/!2560,2560/90/default.jpg

? token=eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODgyMzA0NzgsImRlcml2YXRpdmVGaWxlcyI6Im9vY2lobS5sYWNfcmVlbF90MTg1ODhcXC9kYXRhXFwvc2lwXFwvZGF0YVxcL2ZpbGVzXFwvLitcXC4oanBnfGpwMnx0aWYpIiwiaXNzIjoiQ0FQIiwiZXhwIjoxNTg4MzE2ODc4fQ.i2BBMCOcmjxpWdsuzrrSzmsD4mfGjMpFjx_LQwWXNbY

Merci d'avance.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Tiflo62
30 avril 2020 à 18:53
bonjour
Je n'arrive pas à télécharger directement depuis mon navigateur l'image que tu as mis en lien dans ton dernier message Voici ce cela me met
.

Or Forbidden signifie Interdit si mes souvenirs sont bon
Etes vous autorisé à accéder à ces images ?
0
Tiflo62 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

30 avril 2020 à 18:57
Oui, il ne faut pas oublier le point d'interrogation et le token derrière et ça ouvre l'image.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151 > Tiflo62
Modifié le 30 avril 2020 à 20:47
Avec le point d'interrogation et le token cela n'ouvre rien chez moi si ce n'est le Forbidden .
Le token serait-il une autorisation avec une date d'expiration ?
0
Tiflo62 > vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022

30 avril 2020 à 21:01
Je vois bien l'image s'afficher, bizarre.
Tester sur 2 appareils et aucun soucis.
0
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
29 avril 2020 à 13:25
Bonjour

tout d'abord, merci d'avoir essayé d'utiliser les balises de code. Cependant le pavé gris tout moche (et pas toujours indenté) n'est pas le résultat escompté.
Voici un court tuto sur leur bonne utilisation https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Je te conseille d'activer Option Strict, ça t'interdira de mélanger des strings et des entiers dans une même ligne. Ça ne fait pas toujours ce que l'on pense.

D'autre part, je te conseille de construire ton url à part. Ça te permet de vérifier plus facilement au débugage si le chemin construit est le bon.
Pour ce faire, il est judicieux d'utiliser string.Format, qui te permet de créer un texte modèle avec des emplacements pour les insertions de variables.
Par exemple
        dim entier as Integer = 1
        dim laDate as DateTime = DateTime.Now
        dim leTexte as string = string.Format("Ce texte permet d'insérer ci après la varibale d'indice 0 {0}, et là la même variable avec un format choisi {0:000}, ou encore la date {1:dd:mm:yy}", entier, laDate)


Enfin pour débugguer, il est plus facilement de mettre en commentaire le try/catch.
Ainsi l'éditeur s'arrêtera sur la ligne qui plante et tu pourras observer le contenu de chaque variable avec les outils adéquates. Voir ici si tu ne sais pas t'en servir https://openclassrooms.com/fr/courses/1526901-apprenez-a-developper-en-c/2867766-utilisez-le-debogueur/

Si après, tu n'as pas pu solutionner ton problème, revient en précisant quelle ligne plante et en postant le nouveau code, le contenu des variables et le message d'erreur

0
Bonjour,

Merci pour ta réponse.

J'ai tenté avec l'url et le chemin en clair et même souci:

 Dim wc As System.Net.WebClient = New System.Net.WebClient
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
        wc.DownloadFile("https://image-gouda.canadiana.ca/iiif/2/oocihm.lac_reel_t18588%2Fdata%2Fsip%2Fdata%2Ffiles%2F0001.jpg/full/!2560,2560/90/default.jpg?token=eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODgyMzA0NzgsImRlcml2YXRpdmVGaWxlcyI6Im9vY2lobS5sYWNfcmVlbF90MTg1ODhcXC9kYXRhXFwvc2lwXFwvZGF0YVxcL2ZpbGVzXFwvLitcXC4oanBnfGpwMnx0aWYpIiwiaXNzIjoiQ0FQIiwiZXhwIjoxNTg4MzE2ODc4fQ.i2BBMCOcmjxpWdsuzrrSzmsD4mfGjMpFjx_LQwWXNbY", "C:\Users\Florent\Pictures\page.jpg")
    End Sub


Voici le message d'erreur:
L'exception System.Net.WebException n'a pas été gérée
Message=The request was aborted: Could not create SSL/TLS secure channel.

Aucun souci avec une image d'une autre url en https comme Facebook par exemple.
https://static.xx.fbcdn.net/rsrc.php/v3/yi/r/OBaVg52wtTZ.png


Merci d'avance pour votre aide.
0
Whismeril
Messages postés
17333
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
596
30 avril 2020 à 10:35
Ok, là ça me dépasse, je n'ai jamais écrit de logiciel connecté à internet.
A tout hasard
https://lite.qwant.com/?q=vb.net+The+request+was+aborted%3A+Could+not+create+SSL%2FTLS+secure+channel&client=opensearch
Si tu trouves des choses en C#, sache que VB.Net, en fait c'est du C# déguisé en VB, et on trouve des traducteurs en ligne de l'un vers l'autre.

Sinon, il faut attendre le passage d'un membre qui saurait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour ton aide, je vais explorer cette voie.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
Modifié le 30 avril 2020 à 17:49
Bonjour
Je viens de faire un essai avec l'url en https comme Facebook .
voici mon code
Imports System.Net

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try
            Dim Fichier As String = "D:\Image.jpg"
            Dim wc As WebClient = New WebClient
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
            wc.DownloadFile("https://static.xx.fbcdn.net/rsrc.php/v3/yi/r/OBaVg52wtTZ.png", Fichier)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub
End Class


Je télécharge l'image et la met dans un fichier "D:\Image.jpg"
Ce code fonctionne nickel : voici même l'image téléchargée avec celui-ci


Maintenant pourquoi ton code ne fonctionne-t-il pas ?
1 ) Vérifie que ta listbox contienne des urls correctes
2) Vérifie que les noms de fichiers produits par la boucle soient corrects .
3) DownloadFile attend-t-il qu'un fichier soit complètement téléchargé avant de continuer la boucle ? Je pense que oui car il est dit dans les informations sur cette méthode qu'elle est bloquante .

Attends ta réponse pour envisager la suite donnée à ton problème

PS Dans le code que tu nous as mis la ligne juste après le For est inutile et de plus elle n'est pas préfixée avec System.Net
En suivant les instructions de Whismeril ( Option Strict activé et en même temps je le salue) ton code deviendrait :
Imports System.Net ' en première ligne tout en haut de la Form

Try
            Dim i As Integer
            Dim wc As WebClient = New WebClient
            For i = 0 To DL_Listbox.Items.Count - 1
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                wc.DownloadFile(DL_Listbox.Items(i), PathTextBox.Text & "\page_" & (i + 1).ToString & ".jpg")
            Next
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try




0
Bonjour,

Merci pour votre réponse.

Mon code fonctionne très bien également pour l'image de FB.
Avez-vous testé avec l'URL du site Canadian à citée plus haut ?

L'URL est bonne ainsi que le nom de fichier.

Merci d'avance.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
2 mai 2020 à 01:33
De rien ce fut un plaisir !
Pour mettre le sujet en résolu c'est à toi de le faire ( avec le bouton adéquat )


0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
4 mai 2020 à 08:32
Je me suis permis de mettre le sujet en résolu vu que Tiflo62 ne le fait point
0
Merci, je n'ai pas créé de compte et le bouton n'était donc pas visible.
0