Доставка полезной нагрузки на URL с использованием cURL

Доставка полезной нагрузки на URL с использованием cURL

Мне нужна помощь в определении запроса cURL, необходимого для отправки следующих данных на 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}

Моя главная проблема в том, что я не могу понять, как отформатировать полезную нагрузку выше, чтобы она была правильно отправлена ​​на URL. До сих пор я использовал команды -dи -X POST. Я использую Git Bash.

Я ценю вашу помощь и вклад.

решение1

Должно быть что-то вроде этого:

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>

Интересные части:

  • В echoначале просто нужно поместить содержимое тела в канал to curl. Обратите внимание на использование одинарных кавычек, чтобы не дать bash интерпретировать какие-либо кавычки или что-либо еще в JSON.
  • Использование --data-binaryis для того, чтобы сказать, curlчто тело нужно отправить именно как есть, без изменений. @-Часть говорит ему читать из stdin (в данном случае, конвейер из echo.
  • `-H "Content-Type: text/json" может и не понадобиться, но серверы часто начинают раздражаться, если есть тело запроса, а content-type не указан.
  • Я сделалнетвключить User-Agentзаголовок. У вас есть строка UA в JSON, поэтому, надеюсь, сервер не будет придирчив к заголовку UA, но вы можете легко переопределить curlстроку UA по умолчанию, если захотите.
  • <URL>— это, конечно, URP, на который вы хотите отправить свой POST. Обратите внимание, что если это HTTPS URL и сертификат не является доверенным curl, вам нужно будет указать curlиспользовать небезопасный режим ( -kфлаг).

Связанный контент