解説(4)RESTリクエストのレスポンス処理
商品検索PHPプログラムのサンプルコード(serch.php)解説。
ヤフーショッピングのAPIサーバーに、RESTリクエストを作って投げて
レスポンスを受ける部分です。
// ---------------- 商品検索スタート ------------------------ //
// APIへのリクエストURL生成
$api_url = $API_BASE_URL.$OPERATION."?appid=".$DEVELOPER_ID
."&query=".$key."&hits=".$max_num."&sort=".$ysort."&availability=1";
//echo $api_url;
ヤフーショッピングのwebサービスを使うために、リクエストURLを作ります。
連結するには「.」と言う記号を使います。また固定値は「""」で囲みます。
&availability=1は、入手可能の商品に限るという指定です。
//APIからのレスポンスを取得(file_get_contents関数)
$contents = file_get_contents($api_url);
file_get_contents関数は、ファイルの中身をそのまま変数に格納する関数です。
テキストファイルなら何でも格納できるので色々便利です。
//XMLファイルを分解(simplexml_load_string関数)
$xml = simplexml_load_string($contents);
//print_r($xml);
レスポンスはXML形式で戻ってきますので、
simplexml_load_string関数で配列化して変数$xml に格納します。
★print_r($xml)の「//」を消して$xmlの中身を表示させると
こういう感じになっています。(表示されるスタイルはブラウザによって異なります)
print_r()関数は、配列の中身を表示するときに良く使う関数です。
totalResultsAvailableのところの「58110」と言う数字が、
URLリクエストでヒットした商品数と言うことになります。
//検索件数が0件でない場合,変数$hitsに検索結果を格納します
if ($xml["totalResultsReturned"] != 0) {
$hits = $xml->Result->Hit;
商品情報は、このレスポンスではHit以下の階層にあるので、
Hit以下を新しい変数$hitsに入れ直します。
※PHPの場合は変数の定義をせずに、いきなり変数に値を入れることができます。