2012-08-16 158 views
6

我使用捲曲發送此:POST空捲曲JSON

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "{firstname:james}" http://hostname/index.php 

我想在的index.php

<?php 
die(var_dump($_POST)); 
?> 

,輸出

array(0) { 
} 
這樣顯示POST

我必須誤解有關通過POST發送JSON數據的內容

感謝您的時間

+0

爲您編輯的問題 – PandemoniumSyndicate 2012-08-16 15:40:02

+0

我同意:您沒有正確設置您的JSON/HTTP發佈數據。看看這個鏈接:http://stackoverflow.com/questions/8045260/post-json-data-to-simple-rails-application-with-curl – paulsm4 2012-08-16 15:41:41

+1

我認爲你需要引用變量,因爲它們是字符串不是數字 – Waygood 2012-08-16 15:42:14

回答

21

$_POST陣列如果你在URL編碼格式發送POST體中只填入。 PHP不會自動解析JSON,因此不會填充$_POST數組。你需要得到原料POST體和自己解碼JSON:

$json = file_get_contents('php://input'); 
$values = json_decode($json, true); 
+0

該死的,打我吧:-P – 2012-08-16 15:40:58

+2

由3秒。 O_o – deceze 2012-08-16 15:41:22

+0

原來它應該是'{「firstname」:「james」}' – PandemoniumSyndicate 2012-08-16 15:52:23

5

$_POST只有當你發送編碼形式數據的工作。您正在發送JSON,因此PHP無法將其解析到$_POST陣列中。

您需要直接從POST正文中讀取。

$post = fopen('php://input', r); 
$data = json_decode(stream_get_contents($post)); 
fclose($post);