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 :

Charger un fichier signé


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut Charger un fichier signé
    Bonjour
    Je veux en C# charger un fichier d'adresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string s=http://assets.portfoliopad.com/images/9490/939309/Xlarge/019.jpg?AWSAccessKeyId=AKIAIQJ7P7T4Y5RIMRFQ&Expires=1502708840&Signature=REvNvGBNl31CXn2%2FELBh2mMLALI%3D
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.Net.WebClient wc = new System.Net.WebClient();
    wc.DownloadFile(s,cheminarrivée);
    ne marche pas, sans doute en raison de la signature. Comment le charger?
    Cordialement.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 219
    Points : 336
    Points
    336
    Par défaut
    Bonjour,

    A première vue,
    Citation Envoyé par mecyber25 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string s=http://assets.portfoliopad.com/images/9490/939309/Xlarge/019.jpg?AWSAccessKeyId=AKIAIQJ7P7T4Y5RIMRFQ&Expires=1502708840&Signature=REvNvGBNl31CXn2%2FELBh2mMLALI%3D
    Ne devrait pas plutôt ressembler à ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string s=@"http://assets.portfoliopad.com/images/9490/939309/Xlarge/019.jpg?AWSAccessKeyId=AKIAIQJ7P7T4Y5RIMRFQ&Expires=1502708840&Signature=REvNvGBNl31CXn2%2FELBh2mMLALI%3D";
    Cdt

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut Suite
    Oui j'ai oublié dans cette question @.
    Mais le problème ne vient pas de là.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 201
    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 201
    Points : 5 795
    Points
    5 795
    Par défaut
    WebClient génère une exception : "Le serveur distant a retourné une erreur : (403) Interdit."
    Il semble que le serveur ne soit pas d'accord pour que tu télécharge le fichier, dans ton URL tu as un paramètres de péremptions on dirait "Expires=1502708840" et une clé d’accès, peut être est que cela vient de la.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (WebClient WC = new WebClient())
    {
        WC.DownloadFile("http://assets.portfoliopad.com/images/9490/939309/Xlarge/019.jpg?AWSAccessKeyId=AKIAIQJ7P7T4Y5RIMRFQ&Expires=1502708840&Signature=REvNvGBNl31CXn2%2FELBh2mMLALI%3D", "test.xml");
    }

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Avec le logiciel "HTTrack Website copier" j'arrive à charger une telle photo, pourquoi n'Est-ce pas possible en C#?
    Corsialement

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 201
    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 201
    Points : 5 795
    Points
    5 795
    Par défaut
    J'ai tenté de le télécharger par différentes méthodes (définir le user-agent, HttpWebRequest, HtmlAgilityPack) mais rien à faire erreur 403.

    J'ai aussi essayer par un logiciel tierce et voici ce que j’obtiens
    Authentification requise
    Site : assets.portfoliopad.com
    Nom d'utilisateur :
    mot de passe :

  7. #7
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Il suffit de regarder un peu l'erreur obtenue.

    Tout d'abord, erreur 403 = autorisation refusée. Traduction : l'URL est bonne, mais tu n'as pas les droits nécessaires pour accéder à la ressource.

    Ensuite, en regardant un peu les détails de l'erreur, on constate que le jeton passé en paramètre a une date d'expiration. Donc il est normal qu'une fois cette date passée, l'accès à la ressource soit refusé. C'est comme essayer d'ouvrir une porte avec une ancienne clé alors que la serrure vient tout juste d'être changée !

    Mon avis : si HTTrack Website copier arrive à copier la ressource, c'est que le jeton utilisé est encore bon lorsqu'il y accède. Au vue du fonctionnement de ce genre de logiciel, je dirais que c'est normal car les liens obtenus sont alors "frais".

    Si tu veux pouvoir récupérer la ressource depuis le code C#, il va falloir que :
    • tu télécharges une page où la ressource est référencée, via WebClient ;
    • tu trouve le lien de la ressource dans cette page (merci HtmlAgilityPack !) ;
    • tu télécharges la ressource en elle-même, avec le lien précédemment extrait.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    Rebonjour!
    J'ai étudié HtmlAgilityPack , mais l'ordinateur ne me charge pas les photos; pourtant les adresses obtenues par cette méthode sont valides puisque j'arrive, avec elles, à charger les photos grace à HTTrack website copier; C# est en cause et agility pack compliqué et peu pratique...
    Cordialement

  9. #9
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Quel est le message d'erreur obtenu ? Ou la réponse du serveur ? Car ça ne marche pas n'aide pas vraiment...

    Montre nous le programme que tu as fait.

    C# est en cause
    Ce n'est pas parce que ça ne marche pas que C# est en cause. Le lien que tu as donné en début de sujet ne marche pas. C'est donc la faute de mon navigateur !

    agility pack compliqué et peu pratique...
    Html Agility Pack fait très bien et simplement ce pourquoi il a été fait : extraire des informations d'un code HTML. De base, c'est chiant. Essai de le faire toi-même avec juste les fonctionnalités fournies de base par le Framework, et tu verras qu'il n'est pas si compliqué et vraiment très pratique !

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    je maintiens que par agitiltypack on n'y arrive pas alors qu'avec httrack c'est possible!
    pourquoi?
    Voici le code en C#,
    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
     
                string url = monNavigateur().Url.ToString();
                HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
                HtmlAgilityPack.HtmlDocument doc = web.Load(url);
                var links = doc.DocumentNode.Descendants("img");          
                foreach (var link in links)
                {
                    var href = link.Attributes["data-src"];
                    try
                    {               
              System.Net.WebClient wc = new WebClient();
              wc.DownloadFile(href.Value.ToString().Replace(">","").Replace("<","") , @"C:\\Mes Sites Web\Images\" + nomPhoto());
                    }
                    catch { }            
                }

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite

  12. #12
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Quelle est l'URL de base ? (messages croisés !)

    Ensuite, ça c'est faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var href = link.Attributes["data-src"];
    L'attribut qui indique la source pour les images s'appelle "src" et non "data-src" !

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut suite
    avec src les adresses ne s'affichent pas
    Il faut data-src comme on le vérifie dans le source

  14. #14
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Je persiste et signe, l'attribut qui contient l'image qui est affichée est l'attribut "src" et non "data-src". Ce n'est pas moi qui dit que c'est ainsi, mais le W3C à travers les normes HTML !

    "data-src" est un attribut qui contient très certainement les informations pour pouvoir produire l'attribut "src" à l'aide d'un code javascript. Et regarde bien, "src" et "data-src", même s'ils se ressemblent, sont différents.

    Donc si cela ne fonctionne pas, c'est qu'il faut mettre en oeuvre un mécanisme plus complexe. Simuler la navigation via un navigateur, et ensuite inspecter le DOM via ce navigateur.

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Points : 0
    Points
    0
    Par défaut
    Bonjour

    Regardez le source :
    src est utilisé pour des fichiers .js
    data-src est utilisé pour des fichiers .JPG

    C'est néanmoins plus compliqué car avec Visual Studio C# si on utilise GetImageUrls("src") on obtient bien les adresses des photos
    En revanche en utilisant agilitypack et en affichant l'adresse des photos dans un richTextBox:
    avec "src" la page est blanche,
    avec data-"src" on a bien les adresses des photos chargeables avec HTTrack.
    Avec la méthode que vous m'indiquiez on est contraint d'utiliser data-src.

    Cordialement

  16. #16
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par mecyber25 Voir le message
    Regardez le source :
    src est utilisé pour des fichiers .js
    data-src est utilisé pour des fichiers .JPG
    Non non et non ! Ceci n'est que foutaise. Allez apprendre le HTML, je ne vais pas répéter une 3ème fois ce que j'ai déjà dis à 2 reprises.

    Citation Envoyé par mecyber25 Voir le message
    C'est néanmoins plus compliqué car avec Visual Studio C# si on utilise GetImageUrls("src") on obtient bien les adresses des photos
    D'où sort ce GetImageUrls ?

    Citation Envoyé par mecyber25 Voir le message
    En revanche en utilisant agilitypack et en affichant l'adresse des photos dans un richTextBox:
    avec "src" la page est blanche,
    avec data-"src" on a bien les adresses des photos chargeables avec HTTrack.
    Avec la méthode que vous m'indiquiez on est contraint d'utiliser data-src.
    Comme je l'ai déjà précisé, sur la page en question, l'attribut "src" sur les images est déterminé à partir de l'attribut "data-src" via un code javascript. Si on télécharge directement la page et qu'on utilise ensuite Html Agility Pack, c'est normal de ne pas réussir à extraire l'attribut "src" puisqu'il n'existe pas !

    Par contre, contrairement à ce que je disais plus haut, il semblerait que l'attribut "src" soit une simple copie de "data-src", donc, dans ce cas précis uniquement, il est possible d'utiliser l'attribut data-src pour récupérer l'adresse de l'image. Je ne sais pas pourquoi j'ai cru que les paramètres (et donc les URLs) étaient différents... la fatigue peut-être...

Discussions similaires

  1. [JDOM] Charger un fichier.xml
    Par Glutinus dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/08/2005, 15h46
  2. [Forms6i] Comment charger les fichiers du client ?
    Par patmaba dans le forum Forms
    Réponses: 10
    Dernier message: 31/01/2005, 16h17
  3. Charger des fichiers d'un repertoire
    Par demanghonj dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 05/01/2005, 17h23
  4. [Dexplore] Comment charger des fichiers d'aide ?
    Par Laurent Dardenne dans le forum Windows
    Réponses: 5
    Dernier message: 04/01/2005, 17h38
  5. [TP]Charger un fichier bmp
    Par flavien tetart dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 30/06/2002, 19h04

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