Мне нужна помощь в выяснении запроса 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 ответ1

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .