SMART LLC

JSON形式のデータをPOST送受信する方法(PHP)

公開日:2015/08/11

PHPでJSON形式のデータをPOSTする方法をメモする。

JSONデータの生成

連想配列でデータをつくってjson_encode()でJSON形式の文字列に変換する。

$data = array(
	'test1'=>'aaa',
	'test2'=> array(
		array(
			'test3'=>'bbb'
		)
	),
	'test4'=> array(
		array(
			'test5'=>'ccc',
			'test6'=>'ddd'
		)
	)
);

$data_json = json_encode($data);

表示してみる。

echo $data_json;

できてる。

{"test1":"aaa","test2":[{"test3":"bbb"}],"test4":[{"test5":"ccc","test6":"ddd"}]}

あとは送信するだけ。

POST送信

POSTはcURLでGET/POST送信する方法(PHP)の応用。

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://posttestserver.com/post.php');
$result=curl_exec($ch);
echo 'RETURN:'.$result;
curl_close($ch);

CURLOPT_HTTPHEADERでContent-Typeにapplication/jsonを設定してやるくらい。

JSONデータを受け取る場合

サーバの戻り値がJSONデータの場合はjson_decode()で連想配列を取得できる。

$result=curl_exec($ch);
$res_json = json_decode($result , true );
echo $res_json['return1'];

CURLOPT_RETURNTRANSFERにtrueを指定してcurl_exec()の戻り値を文字列で受け取ったらjson_decode()で変換する。
json_decode()はデフォルトだとstdClassが返るけど第二パラメータにtrueを指定すると連想配列が返る。
あとはは取り出したいキーを指定すればOK。

SHARE