IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Pb téléchargement avec network.DownloadFile


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 15
    Points
    15
    Par défaut Pb téléchargement avec network.DownloadFile
    Bonjour,
    Dans mon programme, j'utilise la fonction network.DownloadFile pour télécharger le contenu d'une Url dans un fichier .txt.
    Cela fonctionnait très bien. Mais depuis quelques jours, le contenu que j'obtiens dans mon fichier .txt est le suivant:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
    <head><title>301 Moved Permanently</title></head>
    <body bgcolor="white">
    <center><h1>301 Moved Permanently</h1></center>
    <hr><center>nginx</center>
    </body>
    </html>
    Si j'ai bien compris, cela veut dire que mon lUrl a été déplacée et donc, que l'adresse que je donne en paramètre de la fonction DownloadFile a changé.
    Mon problème est donc le suivant. Comment récupérer la nouvelle adresse?
    Merci de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Et quelle est cette adresse ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Justement, mon problème est que je ne connais pas la nouvelle adresse.
    L'ancienne était la suivante:
    http://www.letrot.com/stats/fiche-ch...ces-paginate-2
    Evidemment, quand j'accède à cette url manuellement avec un navigateur, j'obtiens un résultat correct.
    Par contre, lorsque je veux télécharger ce fichier avec la méthode DownLoadFile, j'obtiens dans mon fichier le contenu indiqué dans mon 1er message.

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Le problème vient du fait que la nouvelle url est en https..... Il faut donc oublier l'utilisation de la classe My.Computer.Network.DownloadFile et utiliser une autre classe (System.Net.WebClient) qui gère les protocoles de sécurité de type SSL/TLS (dans le cas du site letrot.com il s'agit de la version TLS 1.2) :

    Voilà qui devrait te mettre sur la voie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        string Uri = "http://www.letrot.com/stats/fiche-cheval/diane-des-champs/ZWF8ZQoHCgoR/courses/dernieres-performances-paginate-2";
        //// ou 
        // string Uri = "https://www.letrot.com/stats/fiche-cheval/diane-des-champs/ZWF8ZQoHCgoR/courses/dernieres-performances-paginate-2";
        using (System.Net.WebClient wc = new System.Net.WebClient())
        {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Ssl3;
            wc.DownloadFile(Uri, @"D:\urlContent.txt");
        }

    PS : Il faut que ton projet cible la version 4.5 du framework sinon tu n'auras pas la possibilité d'utiliser les énumérations suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.Net.SecurityProtocolType.Tls11
    System.Net.SecurityProtocolType.Tls12
    Bon codage.

    ++

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Un grand merci à Wallace1.
    Je viens de faire l'essai et cela fonctionne parfaitement.
    Encore merci.

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par berdan Voir le message
    Un grand merci à Wallace1.
    Je viens de faire l'essai et cela fonctionne parfaitement.
    Encore merci.
    Passes le sujet en résolu stp depuis l'édition de ton premier message.

    A+

  7. #7
    Membre à l'essai
    Homme Profil pro
    Economiste
    Inscrit en
    Avril 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Economiste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je me permets de remettre le sujet à jour, et j'avoue que j'ai du mal à comprendre. Pour ma part je me retrouve face à une page protégée par le TLS 1.2. Cette page demande forcément des identifiants (que je connais), mais je ne suis pas sûr de la manière dont mon code doit être fait, pour l'instant j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    using System;
    using System.Net;
    namespace SaveFile
    {
        public class Program
        {
            public static void Main()
            {
                string uri = "https://lesite.fr/fichier.pdf";
                string savePath = @"C:\Users\username\Desktop\fichier.pdf";
                string userName = "username";
                string password = "password";
     
                using (System.Net.WebClient wc = new System.Net.WebClient())
                {
                    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
                    wc.Proxy = WebRequest.DefaultWebProxy; //For connect
                    wc.Credentials = new NetworkCredential(userName, password); //For connect
                    wc.DownloadFile(uri, savePath);
                }
            }
        }
    }
    Le pdf se crée sur mon bureau mais un message me dit que le pdf ne peut pas être ouvert. J'ai remarqué que ce massage s'affiche aussi lorsque la source du fichier est erronée. Le lien est correct, les identifiants aussi, je pense que le soucie vient de mon code vis à vis du protocole.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec My.Computer.Network.DownloadFile
    Par Fireofmage dans le forum VB.NET
    Réponses: 23
    Dernier message: 17/02/2012, 10h47
  2. Réponses: 6
    Dernier message: 16/07/2009, 14h54
  3. Forcer le téléchargement avec un lien
    Par kagura dans le forum Langage
    Réponses: 3
    Dernier message: 08/11/2006, 10h56
  4. Gestion des téléchargements avec javascript ?
    Par TheRedLed dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/09/2006, 19h27
  5. Problème de téléchargement avec Windows XP pro
    Par bernard38 dans le forum Windows XP
    Réponses: 7
    Dernier message: 01/03/2006, 09h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo