Pruebas con CURL

www.altova.com Expandir/Contraer todos Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  APIs de servidor: HTTP REST, COM/.NET, Java > Interfaz cliente HTTP REST > Solicitudes cliente > Iniciar trabajos con POST >

Pruebas con CURL

La aplicación CURL (http://curl.haxx.se/) es una utilidad de la línea de comandos que puede utilizarse para probar la solicitud POST. CURL ofrece una opción de seguimiento muy práctica que genera y enumera las fronteras de parte de las solicitudes. Puede utilizar estas fronteras en sus solicitudes directamente o utilizarlas como referencia.

 

Más abajo puede ver un ejemplo donde se valida un archivo XML con un esquema XML.

 

En este ejemplo se supone que los comandos se ejecutan desde la carpeta donde residen los archivos que se deben validar (esto nos permite escribir rutas de acceso relativas sencillas para estos archivos). Si instaló la aplicación Altova XMLSpy, encontrará los archivos utilizados en el ejemplo en la carpeta Examples de la aplicación, cuya ubicación predeterminada es: C:\Users\<nombreUsuario>\Documents\Altova\XMLSpy2019\Examples.
En este ejemplo se supone que RaptorXML+XBRL Server se ejecuta localmente en el puerto 8087.

 

Para más información sobre las opciones de la línea de comandos CURL consulte la documentación de esta aplicación.

 

Llamar a CURL con el comando de validación en 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

 

Nota:en powershell, si utiliza comillas dentro de otras comillas, éstas deben ser de dos tipos diferentes (sencillas y dobles).

 

 

[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"}

 

Usar la URL de "result" para recuperar el resultado

 

[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":{}}]}

 

Opción de seguimiento de CURL

CURL ofrece la opción de seguimiento (--trace-ascii), que sigue el tráfico HTTP entrante y saliente del servidor. La opción es muy práctica porque enumera las fronteras de parte que son necesarias para iniciar trabajos con POST. Puede usar la información de seguimiento directamente o como referencia para crear fronteras de partes. En el fragmento de código que aparece a continuación puede ver la información de seguimiento que se obtiene al ejecutar el comando.

 

Clic para expandir/contraerFragmento de código de seguimiento

 

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

 

 

 

Nota:observe que también es válido usar 'Content-Disposition: form-data' junto con 'Content-Disposition: attachment'.

 

Llamar a CURL con el comando well-formed-check en 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