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

Lazarus Pascal Discussion :

Envoyer des données JSON sur API REST par la méthode PUT [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut Envoyer des données JSON sur API REST par la méthode PUT
    Bonjour,

    Voilà, je dois réaliser un petit programme qui enverra régulièrement des données à un site en http.
    Je dois utiliser l'API REST, en utilisant la methode PUT et envoyer les données en format JSON
    et regarder si j'ai une erreur ou pas !

    J'avoue ne jamais avoir fais cela

    Quelqu'un aurait un bout de code ? Une piste ?

    Il faut que le programme tourne sur un PC sous Windows (XP/Vista/Seven/8 ou même 10) en 32 ou 64 bits.

    Je pensais un programme 32 bits tout simple (j'ai à peine besoin d'une interface graphique, je programme sera executer automatiquement toutes les n min, ou déclenchement via un autre programme.

    Merci d'avance

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Quelqu'un aurait un bout de code ? Une piste ?
    Toi, t'as pas beaucoup cherché (oui, je sais, l'interface de recherche de ce forum est une calamité...)

    M'en suis souvenu parce que c'est pas très vieux, et je ne sais pas du tout ce que ça vaut, mais tu voulais une piste, alors roule !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Toi, t'as pas beaucoup cherché (oui, je sais, l'interface de recherche de ce forum est une calamité...)

    M'en suis souvenu parce que c'est pas très vieux, et je ne sais pas du tout ce que ça vaut, mais tu voulais une piste, alors roule !
    Salut Jipété,

    J'ai lu ce sujet, mais je n'ai pas tout compris, c'est après cette lecture que j'ai posté...
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    J'ai lu ce sujet, mais je n'ai pas tout compris, c'est après cette lecture que j'ai posté...
    Ah, désolé de t'avoir violemment agressé, alors

    Ceci étant dit, ça va peut-être (j'espère !) stimuler la curiosité de l'ami Jurassic Pork, qui a participé au sujet, mais lui il passe à pas d'heure (je le suspecte d'être à l'autre bout de la planète ), donc sois patient et dans l'attente, relis un coup Wikipedia.
    Parce que je ne connaissais pas du tout ces termes (sauf à les avoir vus par ci par là) alors quand j'ai vu venir ce post et comme j'avais 5 minutes j'ai googlé un coup pour savoir de quoi qu'on causait, et ça ne m'a pas paru insurmontable.

    Maintenant, c'est pas ma tasse de thé, ces trucs.
    Courage...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 952
    Points : 9 281
    Points
    9 281
    Par défaut
    hello,
    Si tu ne veux pas trop t'embêter tu peux utiliser curl qui est un programme en ligne de commande opensource. Il est capable de gérer les commandes REST. exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -i -H "Accept: application/json" -X PUT -d "phone=1-800-999-9999" http://192.168.0.165/persons/person/1
    On peut l'intégrer dans un programme Lazarus en utilisant un TProcess pour l'exécuter.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Bonjour,
    et merci de vos encouragements.

    Comme le dit Jipété, tout ça à l'air assez simple sur le papier, c'est plus la manière de faire en Lazarus qui me pose un soucis, car je n'ai pas la moindre idée des objets/paramètres/méthodes que je dois utiliser.

    Le principe est que je récupère des données de matériels électroniques divers via un programme développé sous Windev 10, et je dois greffer un programme qui, régulièrement, envoie ces données (pas toutes, certaines seulement, selon des paramètres) sur un serveur WEB.

    Le serveur WEB est collaboratif, donc il a été défini des règles d'envois et de format des données (codifications, spécifications, ...)
    Le choix s'est porté sur REST pour l'API d'envoi et JSON pour le format des données.

    Comme Windev 10 n'est pas capable de faire autre chose que du POST ou du GET, je me suis que je pourrais le faire en lançant un programme Lazarus qui ferait le boulot en arrière plan. L'idée est de faire tourner le programme Lazarus avec un timer qui scrute la présence d'un fichier. Le programme Windev10 créant ce fichier toutes les n minutes, voire exceptionnellement en cas de problème (des alertes peuvent être reçues de la part du matériel, dans ce cas, on envoie ces alertes dés réceptions, ainsi que leurs corrections au cas où).

    J'ai repris ton exemple JP, mais je ne suis pas sûr d'avoir besoin de tout ce que tu écris, et quelle est l'importance des lignes suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    httpClient.AddHeader('Accept','application/json');
      httpClient.AddHeader('Content-Type','application/json');
    Bref, plein de questions, et pas beaucoup de réponses, je me fais l'impression d'un conducteur de voitures, de nuit, dans un épais brouillard et sans phares...

    A+
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 952
    Points : 9 281
    Points
    9 281
    Par défaut
    hello,
    pourquoi ne pas utiliser curl dans le code windev ? tu peux modifier le code windev ? quelle version ?

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    pourquoi ne pas utiliser curl dans le code windev ? tu peux modifier le code windev ? quelle version ?

    Ami calmant, J.P
    C'est Windev 10, et oui, je peux le modifier, d'ailleurs il faut que je le modifie.
    Je préfèrerais développer mon propre programme, car je vais devoir aller chercher des données dans un fichier DBF, les supprimer si c'est OK et les conserver pour les renvoyer en cas de problème.

    Je pense qu'avec Lazarus je dois pouvoir m'en sortir.
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 952
    Points : 9 281
    Points
    9 281
    Par défaut
    tu as quelle version de lazarus et sous quel O.S ? as-tu le paquetage indy installé ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    tu as quelle version de lazarus et sous quel O.S ? as-tu le paquetage indy installé ?
    Lazarus 1.6 (la toute dernière) sous Windows. J'ai Windows 10, mais le système devra tourner de XP à 10 et en 32 ou 64 bit.

    La bonne nouvelle, c'est que j'ai réussi. A 99.99% grâce à ton code .

    Je ne suis pas sûr d'avoir besoin de tout, mais ça fonctionne. Donc, pour moi, c'est résolu ?

    Juste par curiosité, c'est quoi Indy ? Et en quoi est-ce que ça m'aurait aidé ?

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 952
    Points : 9 281
    Points
    9 281
    Par défaut
    indy c'est une méga bibliothèque pour des fonctions réseaux (un peu une usine à gaz) . En fait j'avais trouvé une classe REST en pascal qui utilisait cette bibliothèque et donc cela simplifiait l'interfaçage mais si tu as réussi avec mon code tant mieux. Au fait tu as réussi à faire un PUT ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    indy c'est une méga bibliothèque pour des fonctions réseaux (un peu une usine à gaz) . En fait j'avais trouvé une classe REST en pascal qui utilisait cette bibliothèque et donc cela simplifiait l'interfaçage mais si tu as réussi avec mon code tant mieux. Au fait tu as réussi à faire un PUT ?
    Oui, j'ai réussi et vérifier le résultat sur le site de débug qui a été mis en place. C'est nickel. Voici le code (je cache l'URL et les parties des données ~confidentielles).
    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
    24
    25
    26
    27
    28
    29
    Procedure Tform1.Bitbtn1click(Sender : Tobject);
    var
    	http	: TFPHTTPClient;
      st_DateTime	: String;
      st_Retour	: String;
    
    Begin
      http:=TFPHTTPClient.Create(nil);
    {JE ne sais pas si ces 2 lignes sont nécessaires...}
      http.AddHeader('Accept','application/json'); 
      http.AddHeader('Content-Type','application/json');
    
      st_DateTime:=FormatDateTime('yyyymmddhhmmss',now);
    
      http.RequestBody:=TStringStream.create('{"Code":"S0001",'+
      	'"DateMesure":"'+st_datetime+'",'+
        '"TemperatureMesuree":18.0,'+
        '"Consigne":17,'+
        '"LieuMesure":"INT"}');
      try
        st_retour:=http.Put('http://site/temperatures');
        MessageDlg('Resultat','Réponse : '+inttostr(http.ResponseStatusCode)+chr(13)+chr(10)+http.ResponseStatusText+
        	chr(10)+chr(13)+st_retour,mtInformation,[mbOK],0);
    	Finally
        http.Free;
    	End;
    
    End;
    Dans le code final j'imbriquerai un Try ... Except pour être capable de gérer les problèmes de communication internet (rares, mais existantes...)

    Encore merci pour le bout de code, qui m'a donné une piste, après, un peu de recherche (ça ne fait jamais de mal) et de réflexion (uniquement le matin de 8h à 8h30, après je ne suis plus en état, l'âge que veux-tu...) et roule ma poule !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

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

Discussions similaires

  1. envoyer des données Json
    Par drick35 dans le forum Android
    Réponses: 0
    Dernier message: 17/05/2013, 14h45
  2. Réponses: 0
    Dernier message: 30/08/2012, 16h54
  3. [AC-2007] Envoyer des données sur une base MySQL par ODBC
    Par Mut dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/02/2012, 15h32
  4. [AC-2003] Comment envoyer des données access sur excel?
    Par maringot dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/11/2009, 09h32
  5. Réponses: 1
    Dernier message: 26/04/2008, 18h09

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