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

Web & réseau Delphi Discussion :

Faire une requête https avec une application Delphi 7


Sujet :

Web & réseau Delphi

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut Faire une requête https avec une application Delphi 7
    Bonjour,

    Je voudrais faire une requete web https a partir d'une application Win32 en Delphi 7.

    avec une URL du type 'https://login:password@siteweb.com'

    Est-ce-que quelqu'un sait faire ca?

    MErci d'avance

    David

  2. #2
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Avec les composants Indy TIdHTTP et TIdSSLIOHandlerSocket, j'ai essayé ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    idHttp1.IOHandler := IdSSLIOHandlerSocket1;
    //IdHTTP1.Request.Username:='username';
    //IdHTTP1.Request.Password:='pass';
    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
    IdSSLIOHandlerSocket1.SSLOptions.Mode:=sslmClient;
    memo1.Text := idHTTP1.Get('https://url');
    mais ça ne me donne pas les données souhaitées.

    De plus j'utilise Indy 9, et on a le choix entre deux IOHandlers pour SSL, j'en ai pris un au hasard.

    Est-ce-que quelqu'un pourrait éclairer ma lanterne?

    MErci

  3. #3
    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
    Points : 8 513
    Points
    8 513

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Merci Rayek pour ces informations, mais je ne parviens pas à faire une application qui fonctionne avec si peu d'instructions, d'autant qu'en Indy 9 on n'a pas exactement l'IOHandler qui est indiqué dans le lien.

    Est-ce-que tu aurais un bout de code d'exemple?

    Merci

  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
    Points : 8 513
    Points
    8 513
    Par défaut
    Malheureusement je n'ai aps de code d'exemple en indy9 seulement en indy10 (Voir EasyIndy dans ma signature)

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    J'ai installé Indy 10. Et maintenant j'obtiens le message: Connection closed gracefully
    J'ai un peu plus d'informations, je reçois un header HTTP lors de ma requête https, et finalement j'ai l'impression que ma requête fonctionne, malgré que je n'aie pas directement les infos que je souhaite dans la réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Date: Thu, 10 Apr 2008 05:08:20 GMT
    Server: Apache
    Set-Cookie: Apache=xx.xx.xx.xx.26325120780410093; path=/; expires=Sun, 08-Apr-18 05:08:20 GMT
    Set-Cookie: PHPSESSID=9947680d9e0fef14a595e04ffefb4def; path=/
    Expires: 0
    Cache-Control: must-revalidate, post-check=0,pre-check=0
    Pragma: public
    Content-Disposition: attachment; filename=transactions.xml
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: application/xml
    Content-Language: en
    (j'ai masque mon ip ici)

    A la lecture de cet entete, j'ai l'impression qu'on me demande de créer un cookie de session et de lire un fichier attaché (qui au passage contient ce qui m'intéresse)

    Par contre je n'ai aucune idée de comment faire ces opérations.

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 466
    Points
    28 466
    Par défaut
    il manque la première ligne...200 OK ?

    et le Content-Length, car finalement il te renvoie bien un fichier XML, mais as-il un contenu ?

    ceci dit, comme c'est un Connection Close, tu devrais lire la réponse jusqu'à fermeture de la connexion afin d'obtenir le fichier.

  8. #8
    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
    Points : 8 513
    Points
    8 513
    Par défaut
    As tu les deux dlls qui sont dans le même répertoire que le logiciel (ou dans le répertoire système de windows) comme indiquer dans la ?

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Paul Toth:
    En ce qui concerne le 200 OK, je ne sais pas s'il est là, parce que j'ai simplement utilisé le bout de code suivant pour l'obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm1.IdHTTP1HeadersAvailable(Sender: TObject;
      AHeaders: TIdHeaderList; var VContinue: Boolean);
    begin
    begin
         memo1.Clear;
         memo1.Lines.Add(AHeaders.Text);
    end;
    Rayek:

    En ce qui concerne les DLL, oui je les ai, mais j'ai dû utiliser celles qui sont conseillées pour Indy9 car celle pour Indy10 me donne un "Could not load SSL library" (j'ai simplement mis les DLL dans le dossier de l'application)

  10. #10
    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
    Points : 8 513
    Points
    8 513
    Par défaut
    Citation Envoyé par davidkungfu Voir le message
    Paul Toth:
    En ce qui concerne le 200 OK, je ne sais pas s'il est là, parce que j'ai simplement utilisé le bout de code suivant pour l'obtenir:
    Pour le 200 (ou autre valeurs) tu dois avoir la possibilité de l'avoir par la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IdHttp.Response.ResponseCode; // normalement le 200
    IdHttp.Response.ResponseText; // normalement le OK
    Ou quelques choses dans le style, il te faut trouver la bonne commande (ce que je te donne c'est en Indy10, il te faut trouver l'équivalent en Indy9)).



    Citation Envoyé par davidkungfu Voir le message
    En ce qui concerne les DLL, oui je les ai, mais j'ai dû utiliser celles qui sont conseillées pour Indy9 car celle pour Indy10 me donne un "Could not load SSL library" (j'ai simplement mis les DLL dans le dossier de l'application)
    Ok, nikel

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Oui c'est ca que j'obtiens

    Code: 200
    Text: HTTP/1.1 200 OK

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Si j'ajoute la ligne suivante dans le HeadersAvailable, j'obtiens -1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit12.Text:=inttostr(idhttp1.Response.ContentLength);
    Donc apparemment le contenu n'est pas là?

  13. #13
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Points : 48
    Points
    48
    Par défaut
    Rayek, juste une précision, je suis maintenant en Indy 10 mais c'est les DLL Indy 9 qui fonctionnent chez moi. (j'etais jusqu'à hier avec Indy 9 et j'ai desinstallé la 9 pour mettre la 10 dans mon Delphi 7).

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

Discussions similaires

  1. [WM20] Réaliser une requête http avec certificat sur iOS
    Par law56100 dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 28/04/2015, 12h50
  2. Réponses: 6
    Dernier message: 26/07/2012, 00h09
  3. Réponses: 9
    Dernier message: 07/09/2011, 16h05
  4. Générer requête HTTP avec une autre IP
    Par Linkman_xbp dans le forum Windows
    Réponses: 0
    Dernier message: 18/09/2010, 16h29
  5. Transmission des objets avec une requête HTTP POST
    Par handsome01 dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2009, 17h07

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