2011-05-24 35 views
23

我从命令行使用Curl来调试我正在处理的小型web api。 web api期待基本认证和一个JSON对象作为输入(POST)。目前这个基本身份验证工作正常:通过CURL POST JSON并进行基本身份验证

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错误的请求响应,任何关于如何在此POST请求中捆绑json对象的想法?

回答

50

试一下:

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

+0

工作很好,谢谢你! – 2bard 2011-05-29 20:41:57

1

不要使用

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

改用

$person = $_POST['person']; 

如果你正在使用curl在命令行这是想POST JSON数据语法:

curl -d 'person={"name":"bob"}' 
+1

从各个线程我已经在这个题目读的file_get_contents(“PHP://输入”),似乎是检索的标准方式发布请求的原始内容。 – 2bard 2011-05-24 12:06:28

+0

@LBNerdBard定义“标准”。 – 2011-05-24 12:07:40

+0

我应该说'最明智'而不是'标准',因为我不处理多部分表单数据,而是处理单个字符串实体 – 2bard 2011-05-24 12:13:27

0
curl --request POST \ 
    --url http://host/api/content/ \ 
    --header 'authorization: Basic Esdfkjhsdft4934hdfksjdf' 
相关问题