このページの目次

楽天検索API用PHP解説(2)

PHPプログラムで、楽天のWEBサービスAPIで商品検索する関数の解説(2)//--------- APIへのリクエストURL生成// リクエストURL生成$rakuten_url = $API_BASE_URL.'?developerId='.$DEVELOPER_ID.'&affiliateId='.$AFFILIATE_ID.'&operation='.$OPERATION.'&version='.$API_VERSION;

 

ここでは、URLリクエストをAPIサーバーに投げるための基本的なURLを組み立てている。

 

//送料無料の処理if($shipping == 1){$keywords = $keywords.' 送料無料';

 

}送料無料で検索したい場合、「検索キーワード」に「送料無料」を付け加える処理。

 

※これは検索キーワードに「送料無料」を入れるだけで、ハッキリ言って使えなかった。

 

//検索条件作成$key = urlencode(mb_convert_encoding($keywords,"UTF-8","auto"));

 

検索キーワードをUTF-8に変換し、さらにURLエンコードしている部分。

 

$rakuten_c = '&keyword='.$key.'&genreId='.$genreId.'&hits='.$max_num.'&sort='.$sort.'&minPrice='.$minP.'&maxPrice='.$maxP;

 

検索条件部分を組み立てている部分。

 

絞り込みが色々あると面倒だが、ソート順を価格昇順に設定する時、最低価格を指定しておかないと、レスポンスが関連商品ばかりになることがよくある。

 

$api_url = $rakuten_url.$rakuten_c;

 

APIサーバーに投げるURLがここで完成。

 

//echo $api_url;

 

//API情報の取得リクエストURLがちゃんとできているか、確かめるときに使う記述。

 

「//」のコメントアウト記号を消してプログラムを動かすと、URLが表示される。

 

$contents = @file_get_contents($api_url);

 

リクエストを投げて返ってきたレスポンスを変数$contents に入れる。

 

file_get_contents関数の頭につけている@マークは、失敗したときのエラーコードを表示させないための指定だ。

 

$Sta = $xml->Header->Status;
if($Sta = "Success"){//echo "G";
}else{echo "失敗1";
sleep(3);
$contents = file_get_contents($api_url);
}

 

レスポンスのステイタス情報を読み込んで、失敗していたら3秒後にもう一度挑戦する。




 

 

$data_size = strlen($contents);
//echo $data_size;

 

たまに情報数が少なすぎるレスポンスが返ってきたりするので、ここでデータの文字列を数えてみて、少なかったら間隔をあけて再トライする503エラーが頻発しているときに役に立つ

if($data_size < 2000){sleep(3);

 

$contents = file_get_contents($api_url);
$data_size = strlen($contents);
if($data_size < 2000){sleep(3);
$contents = file_get_contents($api_url);
$data_size = strlen($contents);
if($data_size < 2000){sleep(3);
$contents = file_get_contents($api_url);
}}}else{}

$xml = simplexml_load_string($contents);
コンテンツを配列(変数$xml)に格納する。

 

//print_r($item);

 

// ★ここからデータを配列$list_riに格納$i = 0;

 

foreach($item as &$item){$list_ri[$i]['title'] = mb_strimwidth ($item->itemName, 0, 85, "", "UTF-8");
$list_ri[$i]['price'] = $item->itemPrice;
if($item->taxFlag == 0){$list_ri[$i]['tax'] = "税込み";
}else{$list_ri[$i]['tax'] = "税別";
}if($item->postageFlag == 0){$list_ri[$i]['post'] = "送料込み";
}else{$list_ri[$i]['post'] = "送料別";
}if($item->imageFlag == 0){$list_ri[$i]['img'] = "./img/noimage.gif";
}elseif($item->mediumImageUrl){$list_ri[$i]['img'] = $item->mediumImageUrl;
}else{$list_ri[$i]['img'] = "./img/noimage.gif";
}if($item->affiliateUrl){$list_ri[$i]['url'] = $item->affiliateUrl;
}else{$list_ri[$i]['url'] = $item->itemUrl;
}$list_ri[$i]['caption'] = mb_strimwidth ($item->itemCaption, 0, 200, "", "UTF-8");
$list_ri[$i]['reviewCount'] = $item->reviewCount;
$list_ri[$i]['reviewAverage'] = $item->reviewAverage;
$list_ri[$i]['catchcopy'] = mb_strimwidth ($item->catchcopy, 0, 85, "", "UTF-8");
$list_ri[$i]['img_m'] = $item->smallImageUrl;

 

$i++;

 

}

 

この辺りの解説は、解説(5)商品情報をXMLから取り出すのところと同様です。

 

return $list_ri;

 

商品情報を配列化した変数$list_riを、返値としてもどす。

 

}ユーザー関数ここまで。

広告


Twitter
Facebook
LINE
はてな
ポケット



売れてます

★稼げるアフィリエイター専用SEO分析ツール「COMPASS」

大幅バージョンアップ完了!アフィリサイト作成システムSIRIUS

★SEOに強い戦略的テンプレート「賢威7」

アフィリエイト教材 最新人気ランキング