環境:
PHP 7
curlでWEB APIを叩くために必要な手順は下記の通りです。
php7
<?php
$ch = curl_init(); //1.初期化
curl_setopt($ch, CURLOPT_URL,'URL'); //2.URLをセット
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //3.HTTP リクエストをセット(GET,POST等)
//.. 4.その他必要オプション
$result= curl_exec($ch); //5.実行して、レスポンスを取得
curl_close($ch); // 6.終了
大体の場合、この流れでWEB APIを叩くことができます。
今回は、zipcloudさんの郵便番号から住所データを取得するWEB APIを使わせていただきます。次にサンプルを示します。
php7
<?php
$baseurl = "http://zipcloud.ibsnet.co.jp/api/search";
$zipcode = "5300012"; //郵便番号
$ch = curl_init(); //1.初期化
curl_setopt($ch, CURLOPT_URL,$baseurl . '?zipcode=' . $zipcode); //2.URLをセット
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); //3.HTTP リクエストをセット(GET,POST等)
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //文字列で返す
//curl_setopt($ch, CURLOPT_HEADER, true); // ヘッダーも出力する
//..4.その他必要オプション
$result = curl_exec($ch); //5.実行して、レスポンスを取得
var_dump($result); // 出力
print("-------------------------------");
$resultarr = json_decode($result,true); //jsonを配列に
var_dump($resultarr); //配列で出力
curl_close($ch); // 6.終了
この場合、下記のように出力されます。
output
string '{
"message": null,
"results": [
{
"address1": "大阪府",
"address2": "大阪市北区",
"address3": "芝田",
"kana1": "オオサカフ",
"kana2": "オオサカシキタク",
"kana3": "シバタ",
"prefcode": "27",
"zipcode": "5300012"
}
],
"status": 200
}' (length=293)
-------------------------------
array (size=3)
'message' => null
'results' =>
array (size=1)
0 =>
array (size=8)
'address1' => string '大阪府' (length=9)
'address2' => string '大阪市北区' (length=15)
'address3' => string '芝田' (length=6)
'kana1' => string 'オオサカフ' (length=15)
'kana2' => string 'オオサカシキタク' (length=24)
'kana3' => string 'シバタ' (length=12)
'prefcode' => string '27' (length=2)
'zipcode' => string '5300012' (length=7)
'status' => int 200
ちなみに、
php7
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); //文字列で返す
をセットした場合、curl_exec()のレスポンスは文字列なので、今回の場合json形式の文字列となります。郵便番号検索API-zipcloudを参考にしてください。
また、PHPでjson形式の文字列は扱いずらいので、下記のように配列に変換すると色々と便利かと思います。
php7
$resultarr = json_decode($result,true); //jsonを配列に
以上です。
phpのcurlオプションは数が多すぎるので、適時リファレンスを見て対応するのがいいかと思います。