[ SPECIAL ]

Amazon Web Services

AWS に PHP からリクエストを送信できる環境を整える

2011/01/30 Tomohiro Kumagai

□ Amazon Product Advertising API

Amazon Web Services のアクセスキーを取得する で、Amazon Product Advertising API で使用する Amazon Web Services (AWS) のアクセスキーを取得したので、それを用いて PHP からリクエストを送信できるよう、環境を整えてみたいと思います。

ちなみに先日 EZ-NET: Amazon Web Services への手動でのリクエストに失敗する で記したように、Amazon が公開している AWS Getting Started Guide に従って手動でリクエストを送信してみたら InternalError で上手くいかなかったのですけど、今回のようにプログラムでリクエストを送信してみたところ、問題なく結果を取得することができました。

 

□ PEAR をインストールする

今回は "Services_Amazon" という PEAR パッケージを利用して、PHP から Amazon Product Advertising API を利用してみたいと思います。

ここでは、既に PEAR が利用できるという前提で話を進めて行きます。PEAR を利用できる環境を整える方法については、EZ-NET: Linux の使い方 PHP ライブラリ提供サービス PEAR を利用できるようにする (CentOS 5.5) を参考にしてみてください。

 

平成 23 年 1 月 30 日現在、"Services_Amazon" ライブラリは、次のようにしてインストールすることができるようになっていました。

pear install -a Services_Amazon-beta

このようにすることで、"Service_Amazon" パッケージと合わせて、それが依存するパッケージもいくつかあわせてインストールされました。

ちなみに、この PEAR::Services_Amazon の使い方については Class: Services_Amazon ページで公開されているようです。

 

□ PEAR::Services_Amazon でリクエストを送信してみる

インストールした PEAR::Services_Amazon ライブラリーを使用して、Amazon Product Advertising API にリクエストを送信してみたいと思います。

例えば次のような PHP ページを作成して、リクエストを送信してみます。

<html>

 

<head>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

<meta content="ja" http-equiv="Content-Language">

</head>

 

<body>

 

<?php

 

require_once('Services/Amazon.php');

 

define('APA_ACCESS_KEY', 'xxxxxxxxxxxx');

define('APA_SECRET_KEY', 'xxxxxxxxxxxx');

 

$amazon = new Services_Amazon(APA_ACCESS_KEY, APA_SECRET_KEY);

$amazon->setLocale('JP'); $amazon->setVersion('2010-11-01');

 

$result = $amazon->ItemSearch('Books', array('Keywords' => 'Amazon API'));

 

print_r($result);

?>

 

</body>

 

</html>

このようにすることで、Amazon Product Advertising API から結果を貰うことができました。

$result には、Amazon Product Advertising API から返された XML データが、階層化されて格納されているので、例えば $result['Item'][0]['ASIN'] といった感じで、XML の内容から必要な箇所が読み取れるようになっていました。

 

□ 取得した結果がエラーかどうかを確認する

PEAR::Services_Amazon で取得した結果がエラーかどうかは "PEAR::isError" メソッドを使用して判定することができるようになっています。

エラーの場合は "Services_Amazon::getError" や "Services_Amazon::getErrors" を用いてその理由を取得できるようになっているので、次のようなコードで、エラー処理を行うことが可能です。

if (PEAR::isError($result))

{

// リクエストが失敗した場合の処理です。

$error = $amazon->getError($result);

 

echo $error['Code'];

echo $error['message'];

}

else

{

// リクエストが成功した場合の処理です。

}

 


 

カスタム検索

copyright © Tomohiro Kumagai @ EasyStyle G.K.
contact me: please from mail-form page.