J'ai une application serveur écrite en ASP.NET sous Windows qui fournit un service Web.
Comment appeler le service Web sous Linux avec cURL?
* nix fournit une jolie petite commande qui facilite beaucoup notre vie.
GET:
avec JSON:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource
avec XML:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
POST:
Pour l'enregistrement de données:
curl --data "param1=value1¶m2=value2" http://hostname/resource
Pour le téléchargement de fichiers:
curl --form "[email protected]" http://hostname/resource
Message HTTP RESTful:
curl -X POST -d @filename http://hostname/resource
Pour vous connecter à un site (auth):
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
Joli-imprimer les résultats curl:
Pour JSON:
Si vous utilisez npm
et nodejs
, vous pouvez installer le package json
en exécutant la commande suivante:
npm install -g json
Usage:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json
Si vous utilisez pip
et python
, vous pouvez installer le package pjson
en exécutant la commande suivante:
pip install pjson
Usage:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson
Si vous utilisez Python 2.6+, l'outil json est inclus dans.
Usage:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool
Si vous utilisez gem
et Ruby
, vous pouvez installer le package colorful_json
en exécutant la commande suivante:
gem install colorful_json
Usage:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson
Si vous utilisez apt-get
(le gestionnaire de paquets aptitude de votre distribution Linux), vous pouvez installer le paquet yajl-tools
en exécutant la commande suivante:
Sudo apt-get install yajl-tools
Usage:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json_reformat
Pour XML:
Si vous utilisez * nix avec l'environnement Debian/Gnome, installez libxml2-utils
:
Sudo apt-get install libxml2-utils
Usage:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -
ou installez tidy
:
Sudo apt-get install tidy
Usage:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -
enregistrement de la réponse curl dans un fichier
curl http://hostname/resource >> /path/to/your/file
ou
curl http://hostname/resource -o /path/to/your/file
Pour une description détaillée de la commande curl, appuyez sur:
man curl
Pour plus de détails sur les options/commutateurs de la commande curl, appuyez sur:
curl -h
Je pense qu'Amith Koujalgi est correct, mais aussi, dans les cas où les réponses du service Web sont en JSON, il serait peut-être plus utile de voir les résultats dans un format JSON vierge au lieu d'une très longue chaîne. Il suffit d'ajouter | grep} | python -mjson.tool à la fin des commandes curl, voici deux exemples:
approche GET avec résultat JSON
curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool
approche POST avec résultat JSON
curl -X POST -H "Accept: Application/json" -H "Content-Type: application/json" http://someHostName/someEndpoint -d '{"id":"IDVALUE","name":"Mike"}' | grep }| python -mjson.tool