2010-11-30 17 views
22

¿Cuál es la forma más fácil de hacer una llamada JSON desde la línea de comandos? Tengo un sitio web que hace una llamada JSON para recuperar datos adicionales.¿Cómo hacer una solicitud/llamada HTTP con la carga útil JSON desde la línea de comandos?

El Solicitud de carga útil como se muestra en Google Chrome tiene el siguiente aspecto:

{"version": "1.1", "method":"progr","id":2,"params":{"call":...} } 

Se trata de hacer la llamada desde la línea de comandos (preferentemente) Linux y recuperar el contenido JSON, no se trata de analizar los datos JSON entrantes .

+2

JSON es un formato de datos, no hay 'llamadas JSON'. lo que estás preguntando son solicitudes HTTP con carga útil JSON. – Javier

+0

@Javier: ¡Sí! Cambiaré el título en consecuencia. – Roalt

Respuesta

31

Uso rizo, asumiendo que los datos son POST'ed, algo así como

curl -X POST http://example.com/some/path -d '{"version": "1.1", "method":"progr","id":2,"params":{"call":...} }' 

Si acaba de recuperar los datos con un GET, y no hacer necesita enviar parámetros de URL de barras nada, que sólo había corrido curl http://example.com/some/path

+0

¡Gracias! ¡Esto funciona realmente bien y exactamente lo que necesitaba! – Roalt

+10

Es posible que necesite '-H" Content-Type: application/json "' too – alanjds

0

¿Has mirado curl? Es muy bueno para facilitar las solicitudes HTTP GET/POST a través de la línea de comandos.

p. Ej. (Para una petición GET):

C:\WINDOWS>curl "http://search.twitter.com/search.json?q=twitterapi&result_type= 
popular" 
{"results":[{"from_user_id_str":"32316068","profile_image_url":"http://a2.twimg. 
com/profile_images/351010682/twitblock_profile_normal.png","created_at":"Thu, 25 
Nov 2010 14:37:46 +0000","from_user":"twitblockapp","id_str":"7805146834669569" 
,"metadata":{"result_type":"popular","recent_retweets":10},"to_user_id":null,"te 
xt":"blocking and reporting functions are currently failing. @TwitterAPI have be 
en notified. http://j.mp/id5w3m","id":7805146834669569,"from_user_id":32316068," 
geo":null,"iso_language_code":"en","to_user_id_str":null,"source":"<a href=&q 
uot;http://twitter.com" rel="nofollow">Tweetie for Mac</a&g 
t;"}],"max_id":9607558079713280,"since_id":0,"refresh_url":"?since_id=9607558079 
713280&q=twitterapi","results_per_page":15,"page":1,"completed_in":0.012698,"sin 
ce_id_str":"0","max_id_str":"9607558079713280","query":"twitterapi"} 
24

usted podría utilizar wget así:

wget -O- --post-data='{"some data to post..."}' --header=Content-Type:application/json "http://www.example.com:9000/json" 
2
curl --request POST \ 
--url http://localhost:8099/someservice/services/boo \ 
--header 'authorization: Basic dkfhsdlepwmdseA==' \ 
--header 'cache-control: no-cache' \ 
--header 'content-type: application/json' \ 
--data '{"value": "24.127.1212.123"}' 
Cuestiones relacionadas