cURL ist ein einfaches Hilfsmittel zum absetzen von HTTP-Anfragen und ist deshalb gut geeignet Beispiele aus diesem wiki nachzuvollziehen und im Praxis-Einsatz verwendet zu werden.
In diesem Tutorial wollen wir die wichtigsten Funktionen von cURL für den täglichen Gebrauch mit Beispielen erläutern.
HTTP-Requests der werden grundsätzlich so ausgeführt:
Windows:
curl -X GET "http://dbap-demo.dstore.de/default/engine/mi_GetUnits"
Unix-ähnliche Betriebssysteme (Mac OSX, Linux) mit Anzeige von formatiertem XML:
curl -X GET 'https://dbap-demo.dstore.de/default/engine/mi_GetUnits' | xmllint --format -
Insbesondere bei Query-Parametern ist die Verwendung der Betriebssystem-spezifischen Anführungszeichen zwingend erforderlich.
Sofern nichts weiter angegeben ist handelt es sich immer um GET-Requests.
Einen POST-Request ohne Angabe eines Bodies setzt man so ab:
curl -X POST http://<Partner>-<Projekt>.dstore.de/.....
Der richtige Weg XML-Daten im Body per POST-Request zu senden ist:
curl -X POST -d @testbatch.xml --header "Content-Type: application/xml" http://<Partner>-<Projekt>.dstore.de/default/engine/execute
Ab webservice_SmartGate Version 1.22 wird als Content-Type, falls nicht angegeben, immer application/xml
angenommen:
curl -X POST -d @testbatch.xml http://<Partner>-<Projekt>.dstore.de/default/engine/execute
Will man den Wert eines Parameters direkt einer Datei entnehmen:
curl -X POST 'http://<Partner>-<Projekt>.dstore.de/default/engine/mi_InsertTempdb_TextData?Format=text/plain' --data-urlencode Data@EineGrosseDatei.log
Das Ergebnis eines Requests schickt cURL auf die Standardausgabe. Diese kann dann je nach Betriebssystem gelesen und weiterverarbeitet werden. Beispiel:
curl -X GET "http://dbap-demo.dstore.de/default/engine/mi_GetUnits" > alleEinheiten.xml
Die Ausgabe der Header im „verbose“-Modus erfolgt nicht auf die Standardausgabe, so dass folgendes Beispiel den Body in eine Datei umleitet, die Header jedoch auf der Konsole angezeigt werden (sofern die Fehlerausgabe nicht umgeleitet ist).
curl -v -X GET "http://dbap-demo.dstore.de/default/engine/mi_GetUnits" > alleEinheiten.xml
Im folgenden einige Optionen von cURL die in der Praxis immer mal wieder nützlich sind:
--user <Benutzername>
(dann wird man zur Angabe des Kennworts aufgefordert und muß nicht das Kennwort im Klartext in den Request schreiben)--compressed
--header '<Headername>: <Wert>
'--insecure
--limit-rate
--location
und für https: --location-trusted
--user-agent
Hinweis: Für viele Parameter gibt es äquivalente Kurz- und Langformen (Beispiel -u
und --user
).