Testen mit CURL

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Server APIs; HTTP REST, COM/.NET, Java > HTTP REST-Client-Schnittstelle > Client Requests > Initiieren von Aufträgen mittels POST >

Testen mit CURL

Die Drittanbieter-Applikation CURL (http://curl.haxx.se/) ist ein Befehlszeilentool, mit dem Sie den POST Request testen können. CURL bietet eine sehr nützliche Trace-Option, die die Begrenzungen der einzelnen Teile von Requests generiert und auflistet und die sie direkt in Ihren Requests oder als Referenz verwendetn können.

 

Unten finden Sie ein Beispieltestszenario, in dem eine XML-Datei anhand eines XML-Schemas validiert wird. Für das Beispiel gelten die folgenden Annahmen:

 

die unten angeführten Befehle werden von dem Ordner aus ausgeführt, in dem sich die zu validierenden Dateien befinden; (dadurch können einfache relative Pfade zu diesen Dateien verwendet werden). Wenn Sie XMLSpy von Altova installiert haben, finden Sie die in diesem Beispiel verwendeten Dateien im Ordner Examples der Applikation. Der vollständige Pfad zu diesem Ordner lautet: C:\Users\<username>\Documents\Altova\XMLSpy2019\Examples
RaptorXML Server wird lokal am Port 8087 ausgeführt

 

Nähere Informationen zu den CURL-Befehlszeilenoptionen finden Sie in der Hilfe zu CURL.

 

Aufrufen von CURL mit dem Validierungsbefehl (unter 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

 

Anmerkung:Wenn in Powershell Anführungszeichen innerhalb von Anführungszeichen stehen, so müssen verschiedene Arten von Anführungszeichen (einfache/doppelte) verwendet werden.

 

 

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

 

Abrufen des Ergebnisses über die URL von "result"

 

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

 

Die Trace-Option von CURL

CURL hat eine Trace-Option (--trace-ascii), die den Verlauf des HTTP-Datenaustausches mit dem Server protokolliert. Die Option ist äußerst nützlich, da sie die zum Initiieren von Aufträgen mit POST benötigten Begrenzungen auflistet. Sie können die Informationen im Trace-Protokoll entweder direkt oder als Referenz verwenden, um die Begrenzungen zu erstellen. Im Codefragment unten sehen Sie das Trace-Protokoll, das bei Ausführung des obigen Befehls aufgezeichnet wurde.

 

Click to expand collapseTrace listing

 

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

 

 

 

 

Anmerkung:Anhand des obigen Codefragments sehen Sie, dass zusätzlich zu 'Content-Disposition: attachment' auch 'Content-Disposition: form-data' gültig ist.

 

Aufrufen von CURL mit dem Befehl zur Überprüfung der Wohlgeformtheit (unter 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