POST JSON over CURL с базовой аутентификацией - PullRequest
27 голосов
/ 24 мая 2011

Я использую 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?

Ответы [ 3 ]

55 голосов
/ 29 мая 2011

Попробуйте:

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 с curl

3 голосов
/ 17 июля 2017
curl --request POST \
  --url http://host/api/content/ \
  --header 'authorization: Basic Esdfkjhsdft4934hdfksjdf'
1 голос
/ 24 мая 2011

Не используйте

$person = file_get_contents("php://input");

, вместо этого используйте

$person = $_POST['person'];

И если вы используете curl из командной строки, это синтаксис для запроса данных JSON POST:

curl -d 'person={"name":"bob"}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...