Bonjour.
En RPGLE, via le *SRVPGM QAXIS10CC, je consomme facilement des services web dont le contenu est une simple Enveloppe avec un body qui contient du XML ou du JSON.
Par contre, je suis confronté à des services web dont le contenu est "Content-Type: multipart/related", avec une partie contenant une enveloppe et un body contenant un flux XML, et une autre partie contenant une image encodée.
Voici la réponse en RAW de l'appel via SOAP UI (l'image encodée n'apparait pas en fin de message, mais elle est bien là, au niveau de "PNG") :
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 HTTP/1.1 200 OK Set-Cookie: JSESSIONID=86DAD2E7C78F222727689EBDB8339458; Path=/ivy/; HttpOnly Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:3323db48-352f-40cf-a2e8-2ed1fb8f7150"; start="<root.message@cxf.apache.org>"; start-info="text/xml" Transfer-Encoding: chunked Date: Fri, 28 Jun 2019 13:58:47 GMT Connection: close Server: - --uuid:3323db48-352f-40cf-a2e8-2ed1fb8f7150 Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"; Content-Transfer-Encoding: binary Content-ID: <root.message@cxf.apache.org> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>...</soap:Body></soap:Envelope> --uuid:3323db48-352f-40cf-a2e8-2ed1fb8f7150 Content-Type: application/octet-stream Content-Transfer-Encoding: binary Content-ID: <a33ce0a8-7516-4462-a784-3f1810218051-96@cxf.apache.org> ‰PNG
Lorsque je consomme ce type de service, toute la préparation de la conversation HTTP se déroule bien jusqu'au "axiscTransportFlush", puis lorsque je fais le "axiscTransportReceive", le programme boucle un petit moment (de 30 secondes à 3 minutes) pour finalement me renvoyer un retour -1 et m'indiquer une erreur lors de la réception des données (HTTPTransportException - SERVER_TRANSPORT_INPUT_STREAMING_ERROR: Error is 3426 - A connection with a remote socket was reset by that socket). Bien-entendu, via SOAP UI, pas de problème, le service fonctionne bien.
La variable dans laquelle je reçois la réponse est du caractère : est-ce que c'est le type du champ qui bloque la réception de la réponse avec l'image encodée ? Si oui, quel type de donnée dois-je utiliser ?
Sinon, comment puis-je faire pour indiquer que seule la partie XML m'intéresse, pas le 2ème boundary avec l'image ?
Merci pour vos conseils.
Partager