--- title: Amazon Product Advertising APIをJavaから使うライブラリ aws-apa tags: [] categories: ["Programming", "Java", "am", "ik", "aws", "apa"] date: 2011-06-18T18:49:46Z updated: 2011-09-22T16:54:50Z --- **2011/07/28 (0.9.1)** - 仕様変更に対応 **2011/08/14 (0.9.2)** - WebServiceException(503エラー)が発生した場合にリトライする機能を追加。デフォルト3回 - associate tagを必須パラメータに変更。 **2011/08/21(0.9.3)** - ロガーをSLF4Jから[YALF][2]へ変更 - ログメッセージの国際化 **2011/09/23(0.9.4)** - 503エラー以外のWebServiceExceptionをすぐにスローするように変更 - YALFのバージョンを0.9.1に
以前本を扱うアプリを作った時にAmazon Product Advertising APIをJavaから使う部分を作り、せっかくだからライブラリに切り出しました。名前はaws-apaです。[Github][1]にコミットしてあります。 「amazon product advertising api java」でぐぐって出てくるJavaサンプルは動かなかったり、日本語の情報を取得できなかったりするので、本ライブラリはそこそこ重宝するかと思います。 JAX-WSでSOAPを叩いています。APIはスキーマからwsimport(ちなみに↓のように)で自動生成したので、作った段階のものはすべてサポートできているはずです。 wsimport -d ./target/classes -s ./src/main/java -p am.ik.aws.apa.jaxws http://ecs.amazonaws.com/AWSECommerceService/AWSECommerceService.wsdl -b custom.xml . ## 設定 `am.ik.aws.apa.AwsApaRequesterImpl`クラスがAWSにリクエストを送るメインです. 次の情報が必要です。 - Accesskey ID - Secret Accesskey - Endpoint (ex. https://ecs.amazonaws.jp) - Associate Tag これらの情報をクラスパス直下の`aws-config.properties`に設定します。 aws.accesskey.id= aws.secret.accesskey= aws.endpoint=https://ecs.amazonaws.jp aws.associate.tag=ikam-22 `am.ik.aws.apa.AwsApaRequesterImpl.AwsApaRequesterImpl(String, String, String, String)`コンストラクタの引数に与えることもできます。 設定ファイルを使う場合はデフォルトコンストラクタを使います。 ## 使用例 ### Item Search AwsApaRequester requester = new AwsApaRequesterImpl(); ItemSearchRequest request = new ItemSearchRequest(); request.setSearchIndex("Books"); request.setKeywords("Java"); ItemSearchResponse response = requester.itemSearch(request); ### Item Lookup AwsApaRequester requester = new AwsApaRequesterImpl(); String asin = "489471499X"; ItemLookupRequest request = new ItemLookupRequest(); request.getItemId().add(asin); request.getResponseGroup().add("Small"); ItemLookupResponse response = requester.itemLookup(request); ## Mavenへの設定例 野良レポジトリにデプロイしたのでMavenからも使えます。 ### レポジトリの設定 ... making-dropbox-releases making's Maven Release Repository http://dl.dropbox.com/u/342817/maven/releases false ### 依存関係の設定 ... am.ik.aws aws-apa 0.9.4 ## 依存ライブラリ - JDK 1.6+ - SLF4J [YALF][2] (0.9.3から移行) - Commons Codec [1]: https://github.com/making/aws-apa [2]: https://github.com/making/yalf