JSON

2012-08-16 13 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の

array(0) { 
} 
を出力
<?php 
die(var_dump($_POST)); 
?> 

に、このようにPOSTを表示しようとしています

POST経由でJSONデータを送信することについて誤解する必要があります

+0

編集済みの質問 – PandemoniumSyndicate

+0

私は同意します:JSON/HTTPの投稿データを正しく設定していません。このリンクを見てください:http://stackoverflow.com/questions/8045260/post-json-data-to-simple-rails-application-with-curl – paulsm4

+1

私はあなたが数値ではない文字列であるので変数を引用する必要があると思います – Waygood

答えて

21

$_POSTあなたはURLエンコード形式でPOST本体を送信する場合にのみ移入され配列でお時間をいただき、ありがとうございます。 PHPは自動的にJSONを自動的に解析しないため、$_POST配列に値を設定しません。あなたは生のPOSTボディを取得し、JSONを自分でデコードする必要があります:あなたはエンコードされた形式のデータを送信する場合

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

くそ、私にそれを打つ: - P –

+2

3秒。 O_o – deceze

+0

「{"firstname": "james"} ' – PandemoniumSyndicate

5

$_POSTにのみ機能します。あなたはJSONを送信しているので、PHPはそれを$_POST配列に解析できません。

POST本体から直接読む必要があります。

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