Entregando uma carga para uma URL, usando cURL

0

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

A minha principal questão é que não consigo descobrir como formatar a carga acima para ser enviada corretamente para um URL. Até agora, tenho utilizado os comandos -d e -X POST . Eu estou usando o Git Bash.

Agradeço sua ajuda e sua contribuição.

    
por Mark 25.09.2015 / 09:32

1 resposta

0

Deve 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 echo no início é apenas para obter o conteúdo do corpo no canal para curl . Observe o uso de aspas simples para impedir o bash de interpretar qualquer uma das aspas ou qualquer coisa no JSON.
  • O uso de --data-binary é para informar curl para enviar o corpo exatamente como está, sem modificações. A parte @- diz para ler de stdin (neste caso, o pipe de echo .
  • O tipo de conteúdo '-H': text / json "pode não ser necessário, mas os servidores geralmente ficam irritados se houver um corpo da solicitação e o tipo de conteúdo não for especificado.
  • Eu não incluí um cabeçalho User-Agent . Você tem uma string UA no JSON, portanto, esperamos que o servidor não seja exigente quanto ao cabeçalho UA, mas você pode facilmente substituir a string UA padrão do curl se quiser.
  • <URL> é, obviamente, o URP para o qual você deseja enviar seu POST. Observe que se for uma URL HTTPS e o certificado não for confiável para curl , você precisará informar curl para usar o modo inseguro ( -k flag).
por 25.09.2015 / 11:14

Tags