test - HTTP POST y GET usando cURL en Linux
linux web service client (2)
Esta pregunta ya tiene una respuesta aquí:
Tuve una aplicación de servidor en asp.net en Windows en que tenía un servicio web para eso.
¿Cómo puedo llamar al servicio web en Linux usando shell script usando el comando cURL?
* nix proporciona un pequeño y agradable comando que nos facilita las vidas.
OBTENER:
con JSON:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource
con XML:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource
ENVIAR:
Para publicar datos:
curl --data "param1=value1¶m2=value2" http://hostname/resource
Para subir archivos:
curl --form "[email protected]" http://hostname/resource
RESTful HTTP Post:
curl -X POST -d @filename http://hostname/resource
Para iniciar sesión en un sitio (auth):
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
Bonita impresión de los resultados del rizo:
Para JSON:
Si usa npm
y nodejs
, puede instalar el paquete json
ejecutando este comando:
npm install -g json
Uso:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json
Si usa pip
y python
, puede instalar el paquete pjson
ejecutando este comando:
pip install pjson
Uso:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | pjson
Si usas Python 2.6+, la herramienta json se incluye en el paquete.
Uso:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | python -m json.tool
Si usas gem
y ruby
, puedes instalar el paquete colorful_json
ejecutando este comando:
gem install colorful_json
Uso:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | cjson
Si usa apt-get
(administrador de paquetes de aptitude de su distribución de Linux), puede instalar el paquete yajl-tools
ejecutando este comando:
sudo apt-get install yajl-tools
Uso:
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json_reformat
Para XML:
Si usa * nix con el entorno Debian / Gnome, instale libxml2-utils
:
sudo apt-get install libxml2-utils
Uso:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | xmllint --format -
o instalar tidy
:
sudo apt-get install tidy
Uso:
curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource | tidy -xml -i -
Guardando la respuesta de curl en un archivo
curl http://hostname/resource >> /path/to/your/file
o
curl http://hostname/resource -o /path/to/your/file
Para una descripción detallada del comando curl, pulsa:
man curl
Para obtener detalles sobre las opciones / interruptores del comando curl, pulsa:
curl -h
Creo que Amith Koujalgi es correcta, pero también, en los casos en que las respuestas del servicio web están en JSON, podría ser más útil ver los resultados en un formato JSON limpio en lugar de una cadena muy larga. Sólo tiene que añadir | grep} | Python -mjson.tool hasta el final de los comandos curl aquí hay dos ejemplos:
GET enfoque con resultado JSON
curl -i -H "Accept: application/json" http://someHostName/someEndpoint | grep }| python -mjson.tool
Enfoque POST con resultado 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