Я пытаюсь отправить данные JSON из командной строки с curl в php-скрипт.
Но я не могу понять, как получить опубликованный JSON на сайте сервера (php)
Это то, что я пробовал до сих пор:
командная строка:
curl -H "Content-Type: application/json" -X POST -i -d '{"token":"xyz"}' http://localhost/api/users.php
users.php
//Receive the RAW post data.
$content = file_get_contents("php://input");
echo $content;
// try to decode json
$decoded = json_decode($content);
if($decoded){
echo "success";
echo $decoded['token'];
}
else{
echo "failed";
}
Результат, который я получаю:
'{token:xyz}'
failed
Я также пытался избежать «в вызове curl как:
curl -H "Content-Type: application/json" -X POST -i -d '{\"token\":\"xyz\"}' http://localhost/api/users.php
но тогда я получаю почти такой же результат:
'{"token":"xyz"}'
failed
Поэтому моя проблема в том, что php-скрипт не может преобразовать полученные данные json.
Что я делаю неправильно?
РЕДАКТИРОВАТЬ (решено):
Вызовите команду cmd curl с двойными кавычками и escape-кавычками между ними:
curl -H "Content-Type: application/json" -X POST -i -d "{\"token\":\"xyz\"}" http://localhost/api/users.php
Кажется, все в порядке, но после тестирования вашего примера он работает, только если я помещаю двойные кавычки вокруг данных поста. Попытайся.
Других решений пока нет …