[PHP]別のURLにJSON形式のデータを送信して受信側で処理後のステータスを返す
2019年7月12日
別のURLに対してJSON形式のデータを送信する。
受信側でデータベースに登録や検索に使ったり目的に沿った処理を実装する。
処理後に正常か異常かを返す。
リクエスト後の戻り値は登録や検索結果のデータ、メッセージを返したりする。
receive.phpから処理が帰ってきたらjson_decodeで配列の形にデコードする。
・サンプルコード
send.php
<?php
$data = array(
array(
'area' => '東北',
'pref' => '青森県',
'kana' => 'あおもりけん',
),
array(
'area' => '関東',
'pref' => '千葉県',
'kana' => 'ちばけん',
),
array(
'area' => '中部',
'pref' => '愛知県',
'kana' => 'あいちけん',
),
);
$send_url = 'http://sample.homestead.test/receive.php';
echo '送信先URL:'.$send_url;
echo '<br>';
echo '<pre>■送信するデータ';
print_r($data);
echo '</pre>';
// receive.phpにJSON形式でデータを投げる
$json = json_encode($data, JSON_PRETTY_PRINT);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $send_url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
$result = curl_exec($ch);
$result = json_decode($result, true);
curl_close($ch);
echo '<pre>■送信結果';
print_r($result);
echo '</pre>';
?>
receive.php
<?php
/**
* JSONで受け取ったデータを配列にして返す
**/
function get_request() {
$content_type = explode(';', trim(strtolower($_SERVER['CONTENT_TYPE'])));
$media_type = $content_type[0];
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $media_type == 'application/json')
{
// 送信データを取得
$request = json_decode(file_get_contents('php://input'), true);
}
else
{
$request = false;
}
return $request;
}
$requests = get_request();
if($requests != false)
{
foreach($requests as $request) {
// 何らかの処理
}
$result = array(
'status' => 1,
'message' => 'データの処理に成功しました。',
);
}
else
{
$result = array(
'status' => 0,
'message' => 'データの処理に失敗しました。',
);
}
header("Content-type: application/json; charset=UTF-8");
$json = json_encode($result);
echo $json;
?>
・実行結果
