Curl отправить json как x-www-form-urlencoded

Я хочу опубликовать следующий JSON:

{
   "cities": {
       "chicago": 123,
       "boston": 245
   }
}

Использование curl как x-www-form-urlencoded без использования файла .json. Я не могу понять, как собрать curl -F ...

curl -F 'data={"cities":{"chicago":123,"boston":245}}' ...
anubhava 13.09.2018 22:16

Какие пары имя / значение ожидает удаленный конец? Нет ни одного ввода, которому соответствует конкретный JSON.

chepner 13.09.2018 22:37
18
2
41 850
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для application/x-www-form-urlencoded вы можете попробовать:

curl -d "param1=value1&param2=value2" -X POST http://localhost:3000/blahblah

Где param1=value... должен быть вашими данными JSON как chicago=123&boston=245

Или явная форма:

curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/blahblah

Вместо http://localhost:3000/blahblah вы должны предоставить реальный URL-адрес вашей службы.

Вся суть curl -F, согласно странице руководства, заключается в том, чтобы «обрабатывать данные POST с использованием Content-Type multipart / form-data согласно RFC 2388». Другими словами, его лучше всего использовать, когда вам нужно имитировать HTML-форму с вводом файла.

Вместо этого используйте curl -d для указания необработанных данных POST:

curl -d '{"cities":{"chicago":123,"boston":245}}' https://example.com

Если это действительно то, как они ожидают данные, это неправильно сконфигурированный сервер, поскольку данные x-www-form-urlencoded должны быть в форме key=value.

Другие вопросы по теме