phpのcurlでJSON形式のデータをPOSTするにはヘッダーに’Content-type: application/json’を指定する。
そして、CURLOPT_POSTFIELDSには配列ではなくJSON形式の文字列をセットする。
送信先のURLと送信するJSONデータを指定してデータを送信し、そのレスポンスを返す関数はこんな感じ。
/**
* @param string $url 送信先のURL
* @param string $data json形式のデータ
* @return string リクエストのレスポンス
*/
function postJson($url, $data){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}