Entregando uma carga útil para um URL, usando cURL

Entregando uma carga útil para um URL, usando cURL

Preciso de ajuda para descobrir a solicitação cURL necessária para enviar os seguintes dados para um 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}

Meu principal problema é que não consigo descobrir como formatar a carga acima para ser enviada corretamente para um URL. Até agora, tenho utilizado os comandos -de . -X POSTEstou usando o Git Bash.

Agradeço sua ajuda e contribuição.

Responder1

Deveria ser algo assim:

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>

As partes interessantes:

  • O echoinício é apenas para colocar o conteúdo do corpo no canal curl. Observe o uso de aspas simples para evitar que o bash interprete qualquer uma das aspas ou qualquer coisa no JSON.
  • O uso de --data-binaryé dizer curlpara enviar o corpo exatamente como está, sem modificações. A @-parte diz para ler do stdin (neste caso, o pipe do echo.
  • O `-H "Content-Type: text/json" pode não ser necessário, mas os servidores geralmente ficam irritados se houver um corpo de solicitação e o tipo de conteúdo não for especificado.
  • Eu fiznãoinclua um User-Agentcabeçalho. Você tem uma string UA no JSON, então esperamos que o servidor não seja exigente quanto ao cabeçalho UA, mas você pode substituir facilmente curla string UA padrão de se desejar.
  • <URL>é, obviamente, o URP para o qual você deseja enviar seu POST. Observe que se for um URL HTTPS e o certificado não for confiável curl, você precisará informar curlpara usar o modo inseguro ( -ksinalizador).

informação relacionada