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

 Delphi Discussion :

Téléchargement d'infos sur le web.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut Téléchargement d'infos sur le web.
    Bonjour,

    Je travaille sur une petite application qui doit récupérer sur un site internet des données météo sous forme codées.

    Mon problème est le suivant:
    Sur le site internet, je dois saisir le code de l'aéroport dont je désire les infos.
    Un spécialiste pourrait-il avoir la gentillesse de m'expliquer comment, sans afficher la page web dans l'application:
    - Faire passer le code de l'aéroport (4 lettres) vers la boîte de saisie du site web.
    - Générer un clic sur un bouton situé sur ce site pour obtenir les infos.
    - Récupérer la chaine texte du site codant les infos.

    Je suis sous Delphi 2010.

    Merci par avance de vos conseils.

    Pierre

  2. #2
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 993
    Par défaut
    tu clique droit sur la page, source, la tu cherche le formulaire, tu récupère l'adresse dans l’attribut "action"
    tu cherche le input tu récupère l'attribut name, il y a peut-être d'autre input a envoyé, les hidden par ex.

    maintenant tu cherche indy post http sur le forum Delphi et tu devrais y arriver, dans la FAQ aussi c'est expliquer comment soumettre un formulaire POST et GET.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Je regarde ça immédiatement

    Grand merci à toi

    Sympathie
    Pierre

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Bonjour,

    Après de longue heures à tenter de comprendre les composants Indy sur pas mal de forum et ne les ayant jamais utilisés jusqu'alors, je reviens vers vous pour plus de détails.

    J'ai Une adresse url qui affiche un formulaire simple avec un champ texte et deux boutons 'SUBMIT' et 'CLEAR'.

    Je tape un code de 4 lettres qui correspond à un aéroport, puis SUBMIT.
    Une autre page s'ouvre contenant un message codé fournissant les données météo pour cet aéroport.

    Je n'ai pas trouvé d'exemple de code faisant ça.

    Merci de votre aide
    Pierre

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Une QR qui doit arriver dans la

    [QR] Comment valider un formulaire contenant des données textuelles et fichiers avec la méthode POST ?

    Il vous faut rajouter dans les uses de l'unité : IdMultipartFormData

    Prenons comme exemple le formulaire ci dessous :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
      <head>
      </head>
      <body>
        <form enctype="multipart/form-data" action="uneurl.com/test.php" method="post">
          <input type="hidden" name="MonChampHidden" value="">
          Nom fichier : <input type="text" name="MonNomFichier" value="">
          Fichier : <input name="fichier" type="file"><br>
          <input type="submit" value="Envoyer">
        </form>
      </body>
    </html>

    Voici comment renseigner tous les champs avec Indy :
    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
     
    function UploadMultiPart(Url,Hidden,Texte, Filename : String) : String;
    var
      IdHttp : TIdHttp;
      Mpfd : TIdMultiPartFormDataStream;
    begin
      IdHttp := TIdHttp.Create;
      Mpfd := TIdMultiPartFormDataStream.create;
      try
        // Gestion des champs texte du formulaire (Texte et Hidden)
        Mpfd.AddFormField('MonChampHidden',Hidden);
        Mpfd.AddFormField('MonNomFichier',Texte);
     
        // Gestion du champ file
        Mpfd.AddFile('fichier',FileName,'multipart/form-data');
     
        // Envoi des informations
         Result := IdHttp.Post(Url,Mpfd);
      finally
        IdHttp.free;
        Mpfd.Free;
      end;
    end;
    Ci dessous un exemple d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      Resultat : String;
    begin
      if OpenDialog1.Execute then
      begin
        Resultat := UploadMultiPart('http://uneurl.com/test.php','toto','titi',OpenDialog1.FileName);
        Showemessage(Resultat); 
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Mille merci,

    avec ceci, je devrais pouvoir m'en sortir, je vous tiens au courant

    Cordialement
    Pierre

  7. #7
    Membre émérite
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 993
    Par défaut
    il n'envoie pas de fichier, c'est plutôt sa :

    http://delphi.developpez.com/faq/?pa...ndyvaliderpost

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Procedure TForm3.Button1Click(Sender: TObject);
    Var
      Ts: TStringList;
    Begin
      Ts := TStringList.Create;
      Try
        Memo1.Lines.Clear;
        Ts.Add('Param1=Valeur1');
        IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded';
        Memo1.Lines.Text            := IdHTTP1.Post('http://localhost/myscript.php', Ts)
      Finally
        Ts.Free;
      End;
    End;

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Voici le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     // Récupération données internet
      Ts := TStringList.Create;
      try
          Ts.Add(EditAirport.Text);// Code Aéroport (exemple: LFPG)
          IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded';
          Memo1.Lines.Text := IdHTTP1.Post('http://weather.noaa.gov/mgetmetar.php',Ts)
      finally
          Ts.free;
      end;
    Le mémo affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h1>Error: you did not provide a location indicator</h1>


    Et voici le code du formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <FORM NAME="textbox" METHOD="post" ACTION="/mgetmetar.php">
     
    <INPUT TYPE="TEXT" NAME="cccc" SIZE="20" ALIGN="MIDDLE"><br>
    <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="SUBMIT" ALIGN="MIDDLE"> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <INPUT TYPE="RESET" NAME="Clear" VALUE="CLEAR" ALIGN="MIDDLE"></form>
    Qu'en pensez vous?
    Merci
    Pierre

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    il n'envoie pas de fichier, c'est plutôt sa :
    Ca permet de faire les deux, c'est un exemple générique

    Citation Envoyé par Pierre95 Voir le message
    Voici le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     // Récupération données internet
      Ts := TStringList.Create;
      try
          Ts.Add(EditAirport.Text);// Code Aéroport (exemple: LFPG)
          IdHttp1.Request.ContentType := 'application/x-www-form-urlencoded';
          Memo1.Lines.Text := IdHTTP1.Post('http://weather.noaa.gov/mgetmetar.php',Ts)
      finally
          Ts.free;
      end;
    Le mémo affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h1>Error: you did not provide a location indicator</h1>


    Et voici le code du formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <FORM NAME="textbox" METHOD="post" ACTION="/mgetmetar.php">
     
    <INPUT TYPE="TEXT" NAME="cccc" SIZE="20" ALIGN="MIDDLE"><br>
    <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="SUBMIT" ALIGN="MIDDLE"> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <INPUT TYPE="RESET" NAME="Clear" VALUE="CLEAR" ALIGN="MIDDLE"></form>
    Qu'en pensez vous?
    Merci
    Pierre
    Tu as mis quoi dans EditAirport.Text ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Le code Aéroport en 5 lettres (exemple LFPG)

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par Pierre95 Voir le message
    Le code Aéroport en 5 lettres (exemple LFPG)
    Soit tu mets dans l'edit : 'cccc=LFPG'
    soit tu modifies ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Ts.Add('cccc=' + EditAirport.Text);// Code Aéroport (exemple: LFPG)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. [XL-2007] Récupération d'infos sur page WEB
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2010, 11h38
  2. recuperer des info sur le web via un programme
    Par lord_abdennour dans le forum C++
    Réponses: 1
    Dernier message: 02/09/2010, 15h46
  3. [WEB]Capture d'infos sur le Web
    Par Urzhiataer dans le forum Access
    Réponses: 4
    Dernier message: 04/04/2007, 07h32
  4. Récupérer des infos sur le web
    Par janego dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2006, 22h20

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