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 paracurl
. 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 informarcurl
para enviar o corpo exatamente como está, sem modificações. A parte@-
diz para ler de stdin (neste caso, o pipe deecho
. - 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 docurl
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 paracurl
, você precisará informarcurl
para usar o modo inseguro (-k
flag).