Tester avec CURL
L'application tierce CURL (http://curl.haxx.se/) est un utilitaire en ligne de commande que vous pouvez utiliser pour tester la requête POST. CURL fournit une option de trace très utile qui génère et répertorie les limites des parties des requêtes, que vous pouvez utiliser directement dans vos requêtes ou comme référence
Vous trouverez ci-dessous un exemple de scénario de test dans lequel un fichier XML est validé par rapport à un schéma XML. Nous partons des hypothèses suivantes :
•les commandes ci-dessous sont exécutées à partir du dossier dans lequel se trouvent les fichiers à soumettre pour validation ; (cela nous permet d'écrire des chemins d'accès relatifs simples vers ces fichiers). Si vous avez installé l'application XMLSpy d'Altova, les fichiers utilisés dans cet exemple se trouvent dans le dossier Examples de l'application, qui est situé par défaut à l'emplacement suivant : C:\Users\<username>\Documents\Altova\XMLSpy2026\Examples
•RaptorXML+XBRL Server s'exécute localement sur le port 8087
Pour plus d'informations sur les options de ligne de commande CURL, voir l'aide CURL.
Appelez CURL avec la commande de validation sous Windows
[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 à l'intérieur d'autres guillemets, il est nécessaire d'utiliser différents types de guillemets (simples/doubles).
[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"}
Utilisez l'URL de "result" pour récupérer 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":{}}]}
Option de suivi de CURL
CURL dispose d'une option de suivi (--trace-ascii) qui permet de suivre le trafic HTTP envoyé vers et depuis le serveur. Cette option est très utile, car elle répertorie les limites de partie nécessaires pour lancer des tâches avec POST. Vous pouvez utiliser les informations contenues dans le suivi, soit directement, soit comme référence, pour créer les limites de partie. La liste ci-dessous montre le suivi obtenu en exécutant la commande indiqué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: Serveur : 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 : notez dans la liste ci-dessus que 'Content-Disposition: form-data' est également valide, en plus de 'Content-Disposition: attachment'.
Appelez CURL avec la commande de contrôle de la validité de la structure sous 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
