IK.AM

@making's tech note


Amazon Product Advertising APIをJavaから使うライブラリ aws-apa

🗃 {Programming/Java/am/ik/aws/apa}
🗓 Updated at 2011-06-18T18:49:46Z  🗓 Created at 2011-06-18T18:49:46Z   🌎 English Page

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にリクエストを送るメインです. 次の情報が必要です。

これらの情報をクラスパス直下の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)コンストラクタの引数に与えることもできます。

設定ファイルを使う場合はデフォルトコンストラクタを使います。

使用例

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+

  • SLF4J YALF (0.9.3から移行)

  • Commons Codec


✒️️ Edit  ⏰ History  🗑 Delete