
Мне нужна помощь в определении запроса 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
начале просто нужно поместить содержимое тела в канал tocurl
. Обратите внимание на использование одинарных кавычек, чтобы не дать bash интерпретировать какие-либо кавычки или что-либо еще в JSON. - Использование
--data-binary
is для того, чтобы сказать,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
флаг).