送信側
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_params);
この2行でPOSTできるようにする。
送りたい値を連想配列にしたのち、json_encodeでJSON形式にして送る
$base_url = 'api.php';
$params = [
'user_id' => $user_id,
'password' => $password
];
$json_params = json_encode($params);
$headers = [
'Content-Type: application/json',
'Accept-Charset: UTF-8',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $base_url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$login_info_return_value = curl_exec($ch);
curl_close($ch);
###受け取るAPI側
JSONで受け取る
$user_id = filter_input(INPUT_POST, 'user_id');
$password = filter_input(INPUT_POST, 'password');
$post_json_data = file_get_contents("php://input");
// JSONファイルを連想配列へ変換
$post_obj_data = json_decode($post_json_data, true);
php://input php://input は読み込み専用のストリームで、 リクエストの body 部から生のデータを読み込むことができます。 php://input は、 enctype=”multipart/form-data” に対しては使用できません。 https://www.php.net/manual/ja/wrappers.php.php
- $post_json_data にJSON形式で格納される
- それを連想配列に戻して使用する