
ElasticSearchのノリで、curlでjsonを飛ばしまくってたのですが、こちらの環境から、別のサーバーへデータを送信する際、jsonを飛ばして、受信側で必死にPOSTを取得してたけど、飛んでこなくて、なんでだろうと思って調べたメモです。
POSTでjsonを飛ばした時の受け取りは「file_get_contents(“php://input”)」
そいや、そんなのがあったな。。。と思って、あぁ…って感じでした。
ちなみに、送信元は以下のような感じ
■送信側
$path='http://testtesttest.com/aaa/aaa.php';
$header = array(
"Content-Type: application/json"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl,CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
$res = curl_exec($curl);
curl_close($curl);
■受け取り側
$data_json = file_get_contents("php://input");
///$data_jsonに受け取ったjsonがテキストベースで入ってる
だそうです。
普通に配列で飛ばす時
別にjsonじゃなくても飛ぶんですよね。でもその時はheaderが違うらしい
■送信側
$path='http://testtesttest.com/aaa/aaa.php';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $path);
curl_setopt($curl,CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($curl);
curl_close($curl);
だってさ。メモっておきます