我从命令行使用Curl来调试我正在处理的小型web api。 web 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响应,关于如何在此POST请求中捆绑json对象的任何想法?
答案 0 :(得分:54)
尝试使用:
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=
位。
或者,这篇文章可能会有所帮助:How to post JSON to PHP with curl
答案 1 :(得分:2)
curl --request POST \
--url http://host/api/content/ \
--header 'authorization: Basic Esdfkjhsdft4934hdfksjdf'
答案 2 :(得分:1)
不要使用
$person = file_get_contents("php://input");
改为使用
$person = $_POST['person'];
如果您从命令行使用curl,这是想要POST json数据的语法:
curl -d 'person={"name":"bob"}'