Impossible de télécharger une image d'une URL https [Résolu]

Signaler
-
 Tiflo62 -
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

Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020
114
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
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435 > Tiflo62
Vérifie d’abord la compatibilité de ton pc
https://docs.microsoft.com/fr-fr/visualstudio/releases/2019/system-requirements
Parce que télécharger 30Go pour rien ce serait dommage
>
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020

Merci, il est compatible !
Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020
114 >
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020

Salut Whis !
Tiflo62 nous as dit qu'il a Windows 7 : or j'avais vérifié que Visual Studio Community soit compatible avec ( c'est le cas si SP1 est installé et les mises à jour de W7 faites )
Mais c'est sympa de lui avoir signalé !
A ++
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435 >
Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020

W7 oui, mais il faut un pc pas trop vieux, c’est de ça dont je parlais, et je pense que Tiflo l’a compris ainsi
>
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020

Visual Studio installé, Framework basculé sur le plus récent, tout fonctionne !
Merci beaucoup pour votre aide et le temps passé !
Le sujet peut être passé en résolu.
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435
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

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.
Messages postés
14776
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 septembre 2020
435
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.
Merci pour ton aide, je vais explorer cette voie.
Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020
114
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




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.
Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020
114
De rien ce fut un plaisir !
Pour mettre le sujet en résolu c'est à toi de le faire ( avec le bouton adéquat )


Messages postés
2236
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
21 septembre 2020
114
Je me suis permis de mettre le sujet en résolu vu que Tiflo62 ne le fait point
Merci, je n'ai pas créé de compte et le bouton n'était donc pas visible.