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 :

Requête HTTP avec Indy Delphi XE7


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    developpeur
    Inscrit en
    mars 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mars 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Requête HTTP avec Indy Delphi XE7
    Salut à tous

    Je développe actuellement une application qui doit envoyer un SMS à la suite d'une opération, par l’intermédiaire d'un API du fournisseur.

    Voici la documentation du fournisseur :
    Pour envoyer un SMS par intermédiaire de l’API, il vous faut lancer une requête HTTP vers l’adresse « https://api.fastermessage.com/v1/sms/send », en spécifiant certains paramètres (texte à envoyer, numéro de téléphone, destinataire, expéditeur, etc.). L’API va vous retourner une réponse sur l’état de la requête soumise : une confirmation de réponse si tout s’est bien passé ou une erreur si elle n’a pas les options de configuration disponibles.

    Les paramètres prisent en compte pour l’envoi de SMS via l’API sont :

    X-API-KEY : ce paramètre est la clé d’authentification de l’API associée à votre compte. Il vous permet de vous identifier à travers la requête HTTP ;

    text : c’est le message à envoyer. Une page SMS est de 160 caractères théoriques et de 153 caractères pratiques. Certains caractères sont comptés en double comme le caractère de retour chariot. Le nombre limité de page SMS que vous pouvez envoyer en une fois est 3 donc 459 caractères ;

    from : c’est l’expéditeur du message. C’est un paramètre de type alphanumérique qui peut être un nom, un numéro de téléphone, etc. Les caractères spéciaux sont interdits. Il est d’au plus 11 caractères ;>>

    to : c’est le destinataire du message. Il s’agit du numéro de téléphone de celui qui reçoit le SMS précédé de l’indicatif de son pays. Exemple : 22990909090
    Voici mes lignes de codes :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ret : String;
      Ts : TStringList;
    begin
     
      Ts := TStringList.Create;
     
      try
     
         Ts.Add('X-API-KEY=clé_authentification_API'); // qui est la clé d'authentification de l'API fournie par le fournisseur
         Ts.Add('from=MH-SOFT');
         Ts.Add('to=22994113773');
         Ts.Add('text=Bonjour très chers clients');
     
         ret:=IdHTTP1.Post('https://api.fastermessage.com/v1/sms/send/',Ts);
         showmessage(ret);
     
      finally
         Ts.free;
      end;
    end;
    j'utilise Indy sous delphi XE7

    Après exécution du code, le serveur m'envoie ce message: HTTP/1.1 401 Unauthorized

    Suis bloqué depuis 01 semaine. j'attends vos aides. Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 261
    Points : 21 665
    Points
    21 665
    Par défaut
    Vérifier dans la doc X-API-KEY est un entête HTTP et non un paramètre du POST
    Voir si selon GET ou POST, cela change de structure

    Et ou est le IOHandler SSL pour supporter l'HTTPS ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not Assigned(IdHTTP1.IOHandler) then
      IdHTTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP1);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre à l'essai
    Profil pro
    developpeur
    Inscrit en
    mars 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mars 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    D'accord...!
    dans ce cas, à quoi devrait ressembler mon code?

  4. #4
    Membre émérite Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - développeur Delphi, PHP et JS
    Inscrit en
    juin 2013
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2013
    Messages : 1 159
    Points : 2 436
    Points
    2 436
    Par défaut
    Pour les envois de headers, c'est là : http://ww2.indyproject.org/docsite/h...P_Request.html

  5. #5
    Membre à l'essai
    Profil pro
    developpeur
    Inscrit en
    mars 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mars 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Comment se fait une requête avec un entête HTTP dans mon cas ci? en fait, j'ai aucune notion. c'est maintenant j me lance dans un tel sujet de la programmation Delphi

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 261
    Points : 21 665
    Points
    21 665
    Par défaut
    Avez-vous déjà ajouter le IOHandler SSL pour l'HTTPS comme je l'ai suggéré, le message devrait changer, au lieu de 401 plutot un 400 (Bad Request) ?
    Avez-vous lu la documentation de Indy concernant l'HTTPS, unité IdSSLOpenSSL - classe TIdSSLIOHandlerSocketOpenSSL ?
    Avez-vous tenter un Postman pour tester le service hors Delphi, cela permettra déjà d'identifier les erreurs au niveau des paramètres et au niveau des Headers, ensuite une fois cela bien maitrisé, vous pourrez passer à la version Delphi

    Pourquoi ne pas contacter le fournisseur de ce service, pour qu'il vous apporte un support ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2006
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

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

    Informations forums :
    Inscription : novembre 2006
    Messages : 604
    Points : 3 236
    Points
    3 236
    Billets dans le blog
    2
    Par défaut
    En complément à la réponse de ShaiLeTroll, Delphi est fourni avec (ou on peut aussi le télécharger à part gratuitement : https://www.embarcadero.com/fr/free-tools/rest-debugger) l'outil REST Debogueur qui permet de mettre au point ses requêtes REST un peu comme Postman (avec moins de possibilité) mais il dispsoe d'une fonction sympa : une fois la requête mise au point, il est possible de copier et de coller sous Delphi directement sur la fiche les composants REST nécessaires et déjà configurés pour la requête mise au point.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre à l'essai
    Profil pro
    developpeur
    Inscrit en
    mars 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mars 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    C'est compris. j vais suivre toutes les pistes indiquées. et j vous donne une suite. merci à tous pour votre promptitude.

  9. #9
    Membre à l'essai
    Profil pro
    developpeur
    Inscrit en
    mars 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : mars 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    En complément à la réponse de ShaiLeTroll, Delphi est fourni avec (ou on peut aussi le télécharger à part gratuitement : https://www.embarcadero.com/fr/free-tools/rest-debugger) l'outil REST Debogueur qui permet de mettre au point ses requêtes REST un peu comme Postman (avec moins de possibilité) mais il dispsoe d'une fonction sympa : une fois la requête mise au point, il est possible de copier et de coller sous Delphi directement sur la fiche les composants REST nécessaires et déjà configurés pour la requête mise au point.
    Je suis de retour mes chers doyens.

    j'ai essayé les deux utilitaires Postman et REST debugger de Delphi. Finalement j'ai pu m'en sortir avec le dernier.

    Merci à tous!

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

Discussions similaires

  1. Script de requêtes HTTP avec paramètre en boucle
    Par padsalad dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2009, 17h46
  2. Script de requêtes HTTP avec paramètre en boucle
    Par padsalad dans le forum Autres
    Réponses: 0
    Dernier message: 29/06/2009, 12h32
  3. Requête http avec retour XML
    Par safisafi dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/05/2009, 16h55
  4. Problème requête HTTP avec caméra IP
    Par Sleeping Lionheart dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 28/02/2009, 22h25
  5. Faire une requête https avec une application Delphi 7
    Par davidkungfu dans le forum Web & réseau
    Réponses: 12
    Dernier message: 10/04/2008, 11h39

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