POST JSON над CURL с базовой аутентификацией
Я использую Curl из командной строки для отладки небольшой веб-api, над которой я работаю. Веб-api ожидает базовую аутентификацию и объект JSON в качестве входных данных (POST). В настоящее время эта базовая аутентификация работает нормально:
curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 http://example.com/api.php
но я также хочу отправить объект JSON в качестве запроса POST:
curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 -X POST -d '{"person":{"name":"bob"}}' http://example.com/api.php
Я получаю ответ 400 Bad Request с приведенной выше командой, любые идеи о том, как я связываю объект json в этом запросе POST?
Ответы
Ответ 1
Попробуйте:
curl -i --user validuser:70e12a10-83c7-11e0-9d78-0800200c9a65 -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"person":{"name":"bob"}}' http://mysite.com/api.php
Я удалил бит json=
в содержимом тела.
В качестве альтернативы, это сообщение может быть полезно: Как разместить JSON на PHP с завитком
Ответ 2
Не используйте
$person = file_get_contents("php://input");
вместо этого используйте
$person = $_POST['person'];
И если вы используете завиток из командной строки, это синтаксис для запроса данных POST json:
curl -d 'person={"name":"bob"}'
Ответ 3
curl --request POST \
--url http://host/api/content/ \
--header 'authorization: Basic Esdfkjhsdft4934hdfksjdf'