Entregar una carga útil a una URL mediante cURL

Entregar una carga útil a una URL mediante cURL

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 -dy -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 echoprincipio es solo llevar el contenido del cuerpo a la tubería curl. 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-binaryes indicar curlque 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 desde echo.
  • 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-Agentencabezado. 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ácilmente curlla 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 certificado curl, deberá indicarle curlque use el modo inseguro ( -kmarca).

información relacionada