Tester avec CURL

www.altova.com Agrandir/Réduire tout Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  API serveur : REST HTTP, COM/.NET, Java > Interface Client HTTP > Requêtes Client > Initier les tâches avec POST >

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\XMLSpy2019\Examples
RaptorXML 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.

 

Click to expand collapseListe de trace

 

== 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

 


© 2019 Altova GmbH