Envoi fichier XML

RPG (3 et 4, free), CL, SQL, etc...
Répondre
domi59
Messages : 1
Enregistré le : mar. 04 mai 2021, 07:41:16

Envoi fichier XML

Message par domi59 »

Bonjour,

J'ai un fichier xml à envoyer depuis l'IFS vers un serveur Azure.
Il s'agit d'un fichier commande et des lignes détails.
Un fichier commande peut contenir plusieurs centaines de lignes.

Je n'ai pas grande maitrise du ILE et Free mais je peux apprendre, j'ai trouvé dans mes recherches que je pouvais utiliser le SQL avec la commande HTTPPOSTCLOB

J'ai trouvé ce code à mettre dans un fichier sql dans l'IFS :
create variable nb.res clob(2g) ccsid 1208 ;

set nb.res = systools.httpPostClob(
'https://http://ptsv2.com/t/yhklj-1615989316/post',
cast('<httpHeader>
<header name="Content-Type" value="application/xml"/>
</httpHeader>' as clob(10K)),
get_clob_from_file('/tmp/essai_cde.xml')) ;

Puis faire un RUNSQLSTM SRCSTMF(httpPostClob.sql) NAMING(*SQL)

Bon je n'ai pas de message d'erreur mais cela ne fonctionne pas.

Auriez vous des exemples de sources à me fournir pour envoyer un fichier .xml.
Je sais écrire dans l'IFS le fichier.
J'ai une adresse https:// pour le serveur azure, un login et un mot de passe.
Mais je ne sais pas comment créer mon source avec cette fonction.

Merci pour votre aide.

Dom

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: Envoi fichier XML

Message par nbonnet »

Bonjour,

Difficile de répondre totalement : il faudrait savoir comment apeler le service web en question.

Plusieurs points :
1. Il faudrait déjà faire fonctionner en SQL "pur" l'appel, c'est plus facile pour avoir des messages d'erreur et faire la mise au point (avec l'interpréteur SQL d'Access Client Solutions par exemple)
2. Quelques sources d'erreurs potentielles : GET_CLOB_FROM_FILE nécessite d'être sous contrôle transactionnel, des éventuels problèmes de CCSID (du job ou du fichier sur l'IFS)
3. C'est du https : il faudra peut être ajouter les certificats racine dans le magasin de certificat de la JVM utilisée (les fonctions HTTPPOSTCLOB est implémentée en Java)
4. Il y a un profil + mot de passe : si c'est une authentification HTTP il faut l'ajouter dans l'entête

Quelques très bonnes références :
https://developer.ibm.com/tutorials/dm-1105httprestdb2/
https://www.volubis.fr/Pausecaf/PAUSECAF64.html
Nathanaël

Hurri
Messages : 38
Enregistré le : lun. 02 nov. 2020, 16:04:59

Re: Envoi fichier XML

Message par Hurri »

Bonjour,

Déjà il y a une question à poser.
Est-ce le serveur Azure qui effectue la demande, ou est-ce le se serveur IBM qui décide d'envoyer ?
Ensuite, est-ce que le serveur Apache est actif sur le serveur IBM ?

Pour les accès aux pages externes (ou même internes), j'utilise personnellement la bibliothèque LIBHTTP de Scott Klement. Elle fournit des outils rapides et efficaces, et me permet même d'appeler rapidement (ce qui n'est pas le cas quand on utilise QShell indiqué par IBM) nos scripts PHP. Quand il s'agit d'échanger avec des serveurs Web, je trouve PHP bien plus adéquat et très efficace.
J'avais développé toute une interface avec un outil externe de gestion de stock (et stockage) il y a 2-3 ans, grâce à cette méthode.

Répondre