2011-05-24 36 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' 
相關問題