418 Stimmen

HTTP POST und GET mit cURL in Linux

Ich habe eine Serveranwendung in ASP.NET auf Windows geschrieben, die einen Webservice bereitstellt.

Wie kann ich den Webservice in Linux mit cURL aufrufen?

805voto

Amith Koujalgi Punkte 10146

*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¶m2=value2" http://hostname/resource

Zum Hochladen von Dateien:

curl --form "fileupload=@filename.txt" http://hostname/resource

RESTful HTTP Post:

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

Zum Einloggen auf einer Seite (Authentifizierung):

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

Schönformatierung der curl-Ergebnisse:

Für JSON:

Wenn Sie npm und nodejs verwenden, können Sie das json-Paket installieren, indem Sie diesen Befehl ausführen:

npm install -g json

Verwendung:

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 installieren, indem Sie diesen Befehl ausführen:

pip install pjson

Verwendung:

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-Werkzeug enthalten.

Verwendung:

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 colorful_json-Paket installieren, indem Sie diesen Befehl ausführen:

gem install colorful_json

Verwendung:

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

Wenn Sie apt-get (aptitude-Paketmanager Ihrer Linux-Distribution) verwenden, können Sie das yajl-tools-Paket installieren, indem Sie diesen Befehl ausführen:

sudo apt-get install yajl-tools

Verwendung:

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

Verwendung:

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

oder installieren Sie tidy:

sudo apt-get install tidy

Verwendung:

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

Für eine ausführliche Beschreibung des Curl-Befehls, siehe:

man curl

Für Details zu Optionen/Schaltern des Curl-Befehls, siehe:

curl -h

57voto

grepit Punkte 18534

Ich denke, Amith Koujalgi hat recht, aber auch in Fällen, wo die Webservice-Antworten in JSON sind, könnte es nützlicher sein, die Ergebnisse in einem sauberen JSON-Format anstelle eines sehr langen Strings zu sehen. Fügen Sie einfach | grep }| python -mjson.tool am Ende der Curl-Befehle hier hinzu sind 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

Bildbeschreibung hier eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X