Ich habe eine Serveranwendung in ASP.NET auf Windows geschrieben, die einen Webservice bereitstellt.
Wie kann ich den Webservice in Linux mit cURL aufrufen?
Ich habe eine Serveranwendung in ASP.NET auf Windows geschrieben, die einen Webservice bereitstellt.
Wie kann ich den Webservice in Linux mit cURL aufrufen?
*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
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
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.