[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; ?>
・実行結果