
Necesito ayuda para determinar la solicitud cURL necesaria para enviar los siguientes datos a una URL.
{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}
Mi principal problema es que no puedo entender cómo formatear la carga útil anterior para que se envíe correctamente a una URL. Hasta ahora, he estado utilizando los comandos -d
y -X POST
. Estoy usando Git Bash.
Agradezco su ayuda y aportes.
Respuesta1
Debería ser algo como esto:
echo '{"requestid":"555555",
"partnermatchid":"10000-000-0000-0000-000",
"usercontext":{"ipaddressmasked":"XXX.XXX.X.XXX",
"useragent":"mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.10 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36",
"country":"us"},
"pagecontext":{"pagetypeid":"2","numslots":"3"},
"istest":false}' | curl --data-binary @- -H "Content-Type: text/json" <URL>
Las partes interesantes:
- Al
echo
principio es solo llevar el contenido del cuerpo a la tuberíacurl
. Tenga en cuenta el uso de comillas simples para evitar que bash interprete cualquiera de las comillas o cualquier elemento del JSON. - El uso de
--data-binary
es indicarcurl
que se envíe el cuerpo exactamente como está, sin modificaciones. La@-
parte le indica que lea desde la entrada estándar (en este caso, la tubería desdeecho
. - Es posible que el `-H "Tipo de contenido: texto/json" no sea necesario, pero los servidores a menudo se ponen de mal humor si hay un cuerpo de solicitud y no se especifica el tipo de contenido.
- Hicenoincluir un
User-Agent
encabezado. Tiene una cadena UA en el JSON, por lo que es de esperar que el servidor no sea exigente con el encabezado UA, pero puede anular fácilmentecurl
la cadena UA predeterminada si lo desea. <URL>
es, por supuesto, la URP a la que desea enviar su POST. Tenga en cuenta que si es una URL HTTPS y , no confía en el certificadocurl
, deberá indicarlecurl
que use el modo inseguro (-k
marca).