###前提・実現したいこと
- Amazon Product Advertising APIにリクエストを送信して商品情報を取得
- 検索結果を10ページ分(100件)まで表示したい
※下記API仕様に準拠することが前提
Product Advertising API
開発者ガイド (API Version 2010-09-01)「結果をページ単位で表示する」
ヒントなど頂ければ幸いです。
###試したこと
下記コードでItemPageパラメータに指定したページの結果10件を表示するところまではできた。
1回のリクエストで10ページ分(100件)のデータを表示させるためには、
$params["ItemPage"] = "1";
の値を1から10までインクリメントして処理できればよいのかな?
と推測しているのですが、どう実装すればよいか分からず困っております。
###該当のソースコード
php
1$baseurl = "https://webservices.amazon.co.jp/onca/xml"; 2 3// リクエストのパラメータ作成 4$params = array(); 5$params["Service"] = "AWSECommerceService"; 6$params["AWSAccessKeyId"] = Access_Key_ID; 7$params["Version"] = "2013-08-01"; 8$params["Operation"] = "ItemSearch"; 9$params["SearchIndex"] = $SearchIndex; 10$params["Keywords"] = $Keywords; 11$params["AssociateTag"] = Associate_tag; 12$params["ResponseGroup"] = "ItemAttributes,Offers, Images"; 13$params["MinimumPrice"] = "100"; 14$params["ItemPage"] = "1"; 15 16 17$base_request = ""; 18foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } 19$base_request = $baseurl . "?" . substr($base_request, 1); 20 21$params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); 22$base_request .= "&Timestamp=" . $params['Timestamp']; 23 24$base_request = ""; 25foreach ($params as $k => $v) { 26 $base_request .= '&' . $k . '=' . rawurlencode($v); 27 $params[$k] = rawurlencode($v); 28} 29$base_request = $baseurl . "?" . substr($base_request, 1); 30 31$base_request = preg_replace("/.*\?/", "", $base_request); 32$base_request = str_replace("&", "\n", $base_request); 33 34ksort($params); 35$base_request = ""; 36foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } 37$base_request = substr($base_request, 1); 38$base_request = str_replace("&", "\n", $base_request); 39 40$base_request = str_replace("\n", "&", $base_request); 41 42$parsed_url = parse_url($baseurl); 43$base_request = "GET\n" . $parsed_url['host'] . "\n" . $parsed_url['path'] . "\n" . $base_request; 44 45$signature = base64_encode(hash_hmac('sha256', $base_request, Secret_Access_Key, true)); 46$signature = rawurlencode($signature); 47 48$base_request = ""; 49foreach ($params as $k => $v) { $base_request .= "&" . $k . "=" . $v; } 50$base_request = $baseurl . "?" . substr($base_request, 1) . "&Signature=" . $signature;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/19 02:40
2017/01/19 02:49
2017/01/19 03:34
2017/01/22 14:33
2017/01/22 14:33