Comment télécharger un fichier depuis https [Résolu]

cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 13 sept. 2012 à 09:06 - Dernière réponse :  Utilisateur anonyme
- 28 sept. 2012 à 02:42
Bonjour,

J'ai des fichiers déposés sur le cloud et je souhaiterais les copier sur mon poste (et réciproquement). Malheureusement je n'y arrive pas. J'ai essayé le code suivant:

Dim login As String = "monlogin"
        Dim MotDePasse As String = "monmotdepasse"
        Dim AdresseCible As New UriBuilder
        AdresseCible.Path = "/vb/dotnetfx.exe" 'fichier à copier
        AdresseCible.Host = "https://skydrive.live.com"
        AdresseCible.UserName = login
        AdresseCible.Password = MotDePasse
        AdresseCible.Port = 1 
        Dim AdresseSource As String = "C:\dotnetfx.exe"
        Try
           My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource)
        Catch
           MsgBox("Erreur de connexion")
        End Try        


Ne connaissant rien aux ports, j'ai essayé toutes les valeurs allant de 1 à 10000 pour AdresseCible.Port car quand je ne mettais pas de Try, j'avais un message d'erreur de port.
Pour la variable AdresseCible.Path, j'ai aussi essayé "//vb/dotnetfx.exe" et "https://skydrive.live.com"/vb/dotnetfx.exe" mais ça ne marche pas mieux.


Merci d'avance pour vos éclaicissements.

GIGADEP
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 22 sept. 2012 à 10:23
3
Merci
Bonjour,
Après 10 jours de galère, j'ai enfin trouvé d'où venait le problème. J'essayais de copier un fichier à la racine du lecteur C: alors qu'il aurait fallu les droits administrateur pour le faire. J'ai changé C:\dotnetfx.exe par un sous-dossier C:\Dossier\dotnetfx.exe et cette fois, ça marche...

GIGADEP

Merci cs_JGD 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_JGD
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 sept. 2012 à 14:10
0
Merci
Salut

Que vaut AdresseCible.Uri ?

Pour info, Download suppose que tu veux rapatrier un fichier depuis le Net juste chez toi (sinon, c'est un Updload).
Dans ce cas, le site est la source, et ton fichier local est la cible.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 sept. 2012 à 15:15
0
Merci
As-tu essayé sur supprimer le https:// d'entête ?
La doc dit qu'il faut y mettre le nom d'hôte ou l'IP.
J'ai fait un test simple et, en effet, c'est l'objet qui s'occupe de mettre l'entête http.
D'ailleurs, quand on place le http:// ou https:// devant ce nom d'hôte, on obtient une erreur "URI non valide : Impossible d'analyser le nom d'hôte".
Cette option va dans Scheme.

Je t'engage vivement à aller lire la doc de l'aide !
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 sept. 2012 à 15:31
0
Merci
Es-tu sûr que ce ne soit FTP qu'il faille utiliser ?
Quelle est la protection .htaccess de ce répertoire (si applicable au Cloud) ?
Commenter la réponse de cs_Jack
cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 13 sept. 2012 à 21:59
0
Merci
Bonsoir,
Je n'ai rien mis dans AdresseCible car, quand je mets quelque chose, il m'affiche "Impossible de convertir une valeur de type 'String' en 'System.Uribuilder'".
J'ai essayé d'enlever https dans host, mais ça ne change rien.
Concernant l'aide, j'ai essayé de regarder mais je ne la comprends pas. Les propriétés sont obscures pour moi, je ne sais pas exactement quoi mettre (host, port, path, ...). Rien de ce que j'ai essayé ne fonctionne.
Si tu as un exemple qui marche, je suis preneur.
Le problème est peut-être qu'il n'est pas possible de procéder de cette manière avec le cloud Skydrive...


GIGADEP
Commenter la réponse de cs_JGD
Utilisateur anonyme - 14 sept. 2012 à 00:14
0
Merci
Bonsoir,

Le problème est peut-être qu'il n'est pas possible de procéder de cette manière avec le cloud Skydrive

Tu peux accéder à SkyDrive par son API

Salut jack
Commenter la réponse de Utilisateur anonyme
cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 14 sept. 2012 à 11:39
0
Merci
GIGADEP
Commenter la réponse de cs_JGD
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 14 sept. 2012 à 13:27
0
Merci
"Impossible de convertir une valeur de type 'String' ..."
Parce que les conversions de type ne sont pas implicites.
Il suffit d'ajouter .ToString derrière.

Comme dans toute url, il ne faut pas d'espace ou d'accent dans le chemin ou le nom du fichier. Est-ce bien ton cas ?
Sinon, il te faut transformer ces caractères spéciaux en code hexa - voir <cette snippet>
Les min/maj sont elles aussi importantes.
Commenter la réponse de cs_Jack
cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 14 sept. 2012 à 15:24
0
Merci
Bonjour,

Mon précédent message n'est pas passé, il est resté vierge. Je remerciais banana32 et jack pour l'aide apportée. Mais je suis toujours aussi perdu.
Jack: - je ne sais pas s'il faut utiliser ftp et je ne sais pas où trouver la protection htaccess du dossier.
- A quel endroit dois-je mettre .ToString?
banana32: - je n'ai jamais utilisé d'API, comment l'intègre-t-on dans un programme? De plus, sur le lien que tu m'as envoyé, on parle de C# mais pas de VB.Net.
- le problème de l'API c'est aussi que je suis alors obligé d'utiliser Skydrive. Si je veux utiliser un autre cloud, ce n'est pas possible (mais si ça marche ce serait déjà une première étape).

Si quelqu'un a un code qui marche pour récupérer des données distantes, je suis preneur.

J'ai essayé le code suivant:

Sub EssaiCopieFichier()
        Dim login As String = "monlogin"
        Dim MotDePasse As String = "monmotdepasse"
        Dim AdresseCible As New UriBuilder
        AdresseCible.Path = "/vb/dotnetfx.exe"
        AdresseCible.Host = "skydrive.live.com"
        AdresseCible.UserName = login
        AdresseCible.Password = MotDePasse
        Dim AdresseSource As String = "C:\dotnetfx.exe"
        Try
            My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource, login, MotDePasse, True, 100)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 End Sub

J'obtiens le code suivant: "URI non valide: port URI non valide"

J'ai aussi essayé la commande suivante:
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)

à la place de la commande:
My.Computer.Network.DownloadFile(AdresseCible.Uri, AdresseSource, login, MotDePasse, True, 100)

Là, l'erreur est la suivante:"l'adresse n'est pas une adresse valide de fichier distant. Une adresse valide doit comporter un protocole, un chemin d'accès et un nom de fichier. Nom du paramètre: adress"

GIGADEP
Commenter la réponse de cs_JGD
cs_JGD 48 Messages postés vendredi 17 janvier 2003Date d'inscription 6 décembre 2012 Dernière intervention - 22 sept. 2012 à 17:07
0
Merci
Finalement, après vérifications, le code marche pour télécharger depuis le cloud vers le PC mais pas l'inverse. Si je remplace
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)
par
My.Computer.Network.DownloadFile("http://" & login & ":" & MotDePasse & "@skydrive.live.com/vb/dotnetfx.exe", AdresseSource)
, j'obtiens un message d'erreur.

GIGADEP
Commenter la réponse de cs_JGD
Utilisateur anonyme - 28 sept. 2012 à 02:42
0
Merci
Bonjour,


J'ai des fichiers déposés sur le cloud


Dire que l'on nous a vendu le micro-ordinateur en nous disant que nous ne dépenderions plus des "mainframes", des terminaux et des lignes téléphoniques.
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.