Tester avec CURL
L'application tierce CURL (http://curl.haxx.se/) est un outil de ligne de commande que vous pouvez utiliser pour tester la requête POST. CURL propose une option de trace très utile qui génère et liste les limites de partie des requêtes qui peut être utilisé directement dans vos requêtes ou en tant qu'une référence.
Ci-dessous, vous trouverez un scénario test dans lequel un fichier XML est validé par rapport à un schéma XML. Considérant que :
•les commandes ci-dessous sont exécutées depuis le dossier dans lequel se trouvent les fichiers à soumettre à la validation ; (cela nous permet d'écrire des chemins relatifs simples vers ces fichiers). Si vous avez installé l'application XMLSpy d'Altova, les fichiers utilisés dans cet exemple peuvent être trouvés dans le dossier Examples de l'application, qui se trouve par défaut sous : C:\Users\<username>\Documents\Altova\XMLSpy2025\Examples
•RaptorXML+XBRL Server est exécuté localement sur le port 8087
Pour plus d'informations concernant les options de ligne de commande CURL, voir l'aide CURL.
Appeler CURL avec la commande de validation sur
[input: powershell]
\path\to\curl.exe -F 'msg={\"command\": \"xsi\", \"args\":[\"additional-files:///PurchaseOrder.zip%7Czip/ipo.xml\"], \"options\":{}};type=application/json' -F "additional-files=@PurchaseOrder.zip;type=application/octet-stream" http://localhost:8087/v1/queue
Note : | dans powershell, si des guillemets apparaissent dans des guillemets, il faudra utiliser un type différent de guillemets (simple/double). |
[input: cmd]
\path\to\curl.exe -F "msg={\"command\": \"xsi\", \"args\":[\"additional-files:///PurchaseOrder.zip%7Czip/ipo.xml\"], \"options\":{}};type=application/json" -F "additional-files=@PurchaseOrder.zip;type=application/octet-stream" http://localhost:8087/v1/queue
[output]
{"jobid": "058F9E97-CB95-43EF-AC0A-496CD3AC43A3", "result": "/v1/results/058F9E97-CB95-43EF-AC0A-496CD3AC43A3"}
Utiliser l'URL de "result" pour obtenir le résultat
[input]
\path\to\curl.exe http://localhost:8087/v1/results/058F9E97-CB95-43EF-AC0A-496CD3AC43A3
[output]
{"jobid":"058F9E97-CB95-43EF-AC0A-496CD3AC43A3","state":"OK","error":{},"jobs":[{"file":"additional-files:///PurchaseOrder.zip%7Czip/ipo.xml","jobid":"D4B91CB0-CF03-4D29-B563-B6506E123A06","output":{},"state":"OK","error":{}}]}
L'option trace de CURL
CURL dispose d'une option trace (--trace-ascii), qui trace le trafic HTTP envoyé de et vers le serveur. L'option est très utile puisqu'elle liste les limites de partie qui sont requises pour lancer des tâches avec POST. Vous pouvez utiliser l'information contenue dans trace, soit directement soit en tant que référence, pour créer des limites de partie. La liste ci-dessous montre la trace obtenue en exécutant la commande donnée ci-dessus.
== Info: Trying ::1... == Info: Connected to localhost (::1) port 8087 (#0) => Send header, 217 bytes (0xd9) 0000: POST /v1/queue HTTP/1.1 0019: Host: localhost:8087 002f: User-Agent: curl/7.42.1 0048: Accept: */* 0055: Content-Length: 2939 006b: Expect: 100-continue 0081: Content-Type: multipart/form-data; boundary=-------------------- 00c1: ----d887ed58324015c3 00d7: <= Recv header, 23 bytes (0x17) 0000: HTTP/1.1 100 Continue => Send data, 393 bytes (0x189) 0000: --------------------------d887ed58324015c3 002c: Content-Disposition: form-data; name="msg" 0058: Content-Type: application/json 0078: 007a: {"command": "xsi", "args":["additional-files:///PurchaseOrder.zi 00ba: p%7Czip/ipo.xml"], "options":{}} 00dc: --------------------------d887ed58324015c3 0108: Content-Disposition: form-data; name="additional-files"; filenam 0148: e="PurchaseOrder.zip" 015f: Content-Type: application/octet-stream 0187: => Send data, 2498 bytes (0x9c2) 0000: PK........"..6}.c.....M.......ipo.xsd.T.N.@.}N....O 5v.}..S....( 0040: .JU/...$Y..5{.E......I*...g...Y...\....Z..~......P.A.ct....y. ... 0940: .........."..6]g......l............. .......address.xsdPK....... 0980: ..."..6I..v.................. .......ipo.xmlPK.................. 09c0: .. => Send data, 48 bytes (0x30) 0000: 0002: --------------------------d887ed58324015c3-- <= Recv header, 22 bytes (0x16) 0000: HTTP/1.1 201 Created <= Recv header, 13 bytes (0xd) 0000: Allow: POST <= Recv header, 32 bytes (0x20) 0000: Content-Type: application/json <= Recv header, 37 bytes (0x25) 0000: Date: Fri, 24 Jul 2015 16:58:08 GMT <= Recv header, 24 bytes (0x18) 0000: Server: CherryPy/3.6.0 <= Recv header, 21 bytes (0x15) 0000: Content-Length: 111 <= Recv header, 2 bytes (0x2) 0000: <= Recv data, 111 bytes (0x6f) 0000: {"jobid": "058F9E97-CB95-43EF-AC0A-496CD3AC43A3", "result": "/v1 0040: /results/058F9E97-CB95-43EF-AC0A-496CD3AC43A3"} == Info: Connection #0 to host localhost left intact
|
Note : | Veuillez noter, dans la liste supérieure 'Content-Disposition: form-data' est aussi valide, outre 'Content-Disposition: attachment'. |
Appeler CURL avec la commande de bonne formation sur Linux
/path/to/curl -F 'msg={"command": "wfxml", "args":[]};type=application/json' -F "args=@ipo.xml;type=application/octet-stream" http://localhost:8087/v1/queue
/path/to/curl -F 'msg={"command": "wfxml", "args":["additional-files:///ipo.zip%7Czip/ipo.xml"]};type=application/json' -F "additional-files=@ipo.zip;type=application/octet-stream" http://localhost:8087/v1/queue