Page 1 sur 1

Soucis format de retour des Web Services

Posté : lun. 15 mai 2023, 14:13:12
par ESTEVES
Bonjour à tous,
Nous avons un souci lors du retour de quelques Web Services qui appel un programme RPG, ce souci se produit en SOAP et en REST,
nous renvoyons une structure avec un tableau.

Code : Tout sélectionner

     d DS_OUTPUT       DS
     d      OU_CERR                  50A
     d      OU_MSGR                 256A
     d      OU_COUNT                 10I 0
     d      OU_SQL                 4096A
     d DS_DATA         DS
     d      OU_DATA               10000A
     š*=============================================================================================
    * Déclarations des procédures
     š*=============================================================================================
     d WService        PR
     d      P_IN                           LIKEDS(DS_INPUT)
     d      P_OUTPUT                       LIKEDS(DS_OUTPUT)
     d     P_DATA                        LIKEDS(DS_DATA) DIM(999)

     
en sortie nous avons

<p_DATA>
<OU_DATA><![CDATA[<xml version="1.0" encoding="UTF-8"?>]]></OU_DATA>
</p_DATA>
<p_DATA>
<OU_DATA><![CDATA[<DATA><NACC>00002630</NACC></DATA>]]></OU_DATA>
</p_DATA>
<p_OUT>
<OU_CERR>0</OU_CERR>
<OU_COUNT>328</OU_COUNT>
<OU_MSGR/>
</p_OUT>


les balises de sortie <p_DATA> et <p_OUT> ont le p en minuscule bien que dans la définition de la structure nous les avons déclarés en tant que P_DATA et P_OUT
le fichier pcml semble correct

Code : Tout sélectionner

<pcml restUriPathTemplate="/" version="4.0">
    <struct name="DS_INPUT" xmlRootElementName="P_IN">
        <data length="3" name="IN_MOD" type="char" usage="inherit"/>
        <data length="10" name="IN_PROG" type="char" usage="inherit"/>
        <data length="60" name="IN_LITE" type="char" usage="inherit"/>
        <data length="3" name="IN_VERD" type="char" usage="inherit"/>
        <data length="10" name="IN_BIBL" type="char" usage="inherit"/>
        <data length="3" name="IN_CLAN" type="char" usage="inherit"/>
        <data length="4" name="IN_NDOS" type="char" usage="inherit"/>
        <data length="3" name="IN_APPL" type="char" usage="inherit"/>
        <data length="1000" name="IN_WHERE" type="char" usage="inherit"/>
        <data length="3" name="IN_NUM_PAGE" type="char" usage="inherit"/>
        <data length="3" name="IN_NB_ENREG" type="char" usage="inherit"/>
    </struct>
    <struct name="DS_OUTPUT">
        <data length="50" name="OU_CERR" type="char" usage="inherit"/>
        <data length="256" name="OU_MSGR" type="char" usage="inherit"/>
        <data length="4" name="OU_COUNT" precision="31" type="int" usage="inherit"/>
        <data length="4096" name="OU_SQL" type="char" usage="inherit"/>
    </struct>
    <struct name="DS_DATA">
        <data length="10000" name="OU_DATA" type="char" usage="inherit"/>
    </struct>
    <program entrypoint="WSERVICE" errormessage="" httpheaders="*NONE" httpstatusonfailure="500"
        httpstatusonsuccess="200" inputWrapperIdentifier="WServiceInput" name="WService"
        outputWrapperIdentifier="WServiceResult" parseorder="P_OUT P_DATA" path="/QSYS.LIB/EURO4PRG.LIB/WWSVIEW.SRVPGM"
        restConsumes="application/xml, application/json" restHttpRequestMethod="PUT"
        restProduces="application/xml, application/json" threadsafe="false" trimmode="*TRAILING" wrapInputParams="false" wrapOutputParam="true">
        <data name="P_IN" struct="DS_INPUT" type="struct" usage="input"/>
        <data name="P_OUT" struct="DS_OUTPUT" type="struct" usage="output"/>
        <data count="999" name="P_DATA" struct="DS_DATA" type="struct" usage="output"/>
    </program>
</pcml>
une idée ?

Merci par avance

Re: Soucis format de retour des Web Services

Posté : lun. 15 mai 2023, 20:57:17
par nbonnet
Bonjour Emmanuel,

Pas d'idée particulière non !

Le PCML semble OK. Le prototype aussi ...

Quelques pistes :
- il n'y a pas eu de recompilation depuis la dernière génération du PCML ? Il est généré dans le module ou directement sur l'IFS ?
- peux-tu montrer le Procedure Interface (PI) ? Je pense que c'est lui qui est discriminant, le prototype étant facultatif
- as-tu essayé de désinstaller/réinstaller le service ?

Re: Soucis format de retour des Web Services

Posté : mer. 17 mai 2023, 17:17:21
par ESTEVES
Bonjour Nathanaël,

voici le PI

Code : Tout sélectionner

p WService        B                   EXPORT
     d WService        PI
     d      P_IN                           LIKEDS(DS_INPUT)
     d      P_OUT                          LIKEDS(DS_OUTPUT)
     d      P_DATA                         LIKEDS(DS_DATA) DIM(999)
j'ai réinstallé complètement le WS rien n'y fait
Le PCML a été généré sur l'IFS mais il doit être géré par le module.

Encore merci

Emmanuel

Re: Soucis format de retour des Web Services

Posté : mer. 17 mai 2023, 17:36:05
par nbonnet
Tout est cohérent, honnêtement je n'ai pas d'idée supplémentaire

Si tu es à jour des GROUP PTF HTTP et JAVA, ouvre un incident ?

bon weekend

Re: Soucis format de retour des Web Services

Posté : mar. 08 août 2023, 07:57:08
par Luka
Bonjour,

Il pourrait y avoir une différence de configuration ou de traitement au niveau de la partie qui génère les réponses XML dans votre code RPG ou dans le processus de transformation XML.

Je vous recommande de vérifier les points suivants :

Assurez-vous que le code RPG qui génère les sorties XML respecte correctement les noms de balises définis dans le PCML.

Vérifiez si d'autres transformations ou couches intermédiaires entre le code RPG et la génération XML modifient les noms de balises.

Si vous utilisez un framework ou une bibliothèque pour la gestion des Web Services, vérifiez sa documentation pour vous assurer que les noms de balises sont correctement traités.

Si possible, examinez les logs ou les informations de débogage pour suivre la trajectoire des données entre le RPG, le PCML et la génération XML.

Cordialement,