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へ変更
- ログメッセージの国際化
2011/09/23(0.9.4)
- 503エラー以外のWebServiceExceptionをすぐにスローするように変更
- YALFのバージョンを0.9.1に
以前本を扱うアプリを作った時にAmazon Product Advertising APIをJavaから使う部分を作り、せっかくだからライブラリに切り出しました。名前はaws-apaです。Githubにコミットしてあります。
「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=<Your Accesskey ID for AWS>
aws.secret.accesskey=<Your Secret Accesskey for AWS>
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からも使えます。
レポジトリの設定
<repositories>
...
<repository>
<id>making-dropbox-releases</id>
<name>making's Maven Release Repository</name>
<url>http://dl.dropbox.com/u/342817/maven/releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
依存関係の設定
<dependencies>
...
<dependency>
<groupId>am.ik.aws</groupId>
<artifactId>aws-apa</artifactId>
<version>0.9.4</version>
</dependency>
</dependencies>
依存ライブラリ
JDK 1.6+
SLF4JYALF (0.9.3から移行)Commons Codec