---
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