it-swarm.com.de

HTTP POST und GET mit cURL unter Linux

Ich habe eine Serveranwendung in ASP.NET unter Windows geschrieben, die einen Webdienst bereitstellt.

Wie kann ich den Webservice unter Linux mit cURL aufrufen?

338
Randhi Rupesh

* nix bietet einen netten kleinen Befehl, der unser Leben viel einfacher macht.

GET:

mit JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource

mit XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

POST:

Zum Posten von Daten:

curl --data "param1=value1&param2=value2" http://hostname/resource

Zum Hochladen von Dateien:

curl --form "[email protected]" http://hostname/resource

RESTful HTTP Post:

curl -X POST -d @filename http://hostname/resource

Zum Einloggen in eine Site (auth):

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

Das Ergebnis der Wellung wird hübsch ausgedruckt:

Für JSON:

Wenn Sie npm und nodejs verwenden, können Sie das json -Paket mit folgendem Befehl installieren:

npm install -g json

Verwendungszweck:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json

Wenn Sie pip und python verwenden, können Sie das pjson -Paket mit folgendem Befehl installieren:

pip install pjson

Verwendungszweck:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson

Wenn Sie Python 2.6+ verwenden, ist das JSON-Tool im Lieferumfang enthalten.

Verwendungszweck:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool

Wenn Sie gem und Ruby verwenden, können Sie das Paket colorful_json mit folgendem Befehl installieren:

gem install colorful_json

Verwendungszweck:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson

Wenn Sie apt-get (aptitude package manager Ihrer Linux-Distribution) verwenden, können Sie das yajl-tools -Paket mit folgendem Befehl installieren:

Sudo apt-get install yajl-tools

Verwendungszweck:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource |  json_reformat

Für XML:

Wenn Sie * nix mit der Debian/Gnome-Umgebung verwenden, installieren Sie libxml2-utils:

Sudo apt-get install libxml2-utils

Verwendungszweck:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -

oder installiere tidy:

Sudo apt-get install tidy

Verwendungszweck:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -

Speichern der Curl-Antwort in einer Datei

curl http://hostname/resource >> /path/to/your/file

oder

curl http://hostname/resource -o /path/to/your/file

Um eine detaillierte Beschreibung des Befehls curl zu erhalten, drücken Sie:

man curl

Für Details zu Optionen/Schaltern des Befehls curl drücken Sie:

curl -h
661
Amith Koujalgi

Ich denke, Amith Koujalgi ist richtig, aber in Fällen, in denen die Webservice-Antworten in JSON sind, ist es möglicherweise sinnvoller, die Ergebnisse in einem sauberen JSON-Format statt in einer sehr langen Zeichenfolge anzuzeigen. Fügen Sie einfach | hinzu grep} | python -mjson.tool bis zum Ende von curl-Befehlen hier zwei Beispiele:

GET-Ansatz mit JSON-Ergebnis

curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool 

POST-Ansatz mit JSON-Ergebnis

curl -X POST  -H "Accept: Application/json" -H "Content-Type: application/json" http://someHostName/someEndpoint -d '{"id":"IDVALUE","name":"Mike"}' | grep }| python -mjson.tool

enter image description here

50
grepit