Amazon Product Advertising API for Windows Phone

AmazonProduct Advertising APIを使うにはシグネチャを生成しなければならないのでとても面倒です。
それを簡単に使えるようにしたC#のサンプルプログラムAmazonのサイトにありますが、残念ながらWindows Phoneではコンパイルが通らなかったので、Windows Phone用に修正したものをCodePlexにアップしました。

Amazon Product Advertising API Signed Requests for Windows Phone


使い方は簡単で、

  1. アクセスキーID(Product Advertising AP]Iのアカウントを生成するともらえる)
  2. シークレットアクセスキー(Product Advertising APIのアカウントを生成するともらえる)
  3. ecsのドメイン(ecs.amazonaws.jp)
  4. アソシエイトID(Amazonアソシエイトに登録するともらえる、*****-22)

を設定し、SignedRequestHelperクラスを生成してパラメータを設定し、Signメソッドでurlを作成します。urlさえ生成してしまえば、後はお決まりのWebClientの3行でリクエストを送信します。

private const string MY_AWS_ACCESS_KEY_ID = "アクセスキーID";
private const string MY_AWS_SECRET_KEY = "シークレットアクセスキーID";
private const string DESTINATION = "ecs.amazonaws.jp";
private const string MY_ASSOCIATE_TAG = "*****-22";

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var helper = new SignedRequestHelper(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, DESTINATION);

    // パラメータの設定(取得する製品や取得したい情報によって変わる)
    var r1 = new Dictionary<string, String>();
    r1["Service"] = "AWSECommerceService";
    r1["Version"] = "2011-08-01";
    r1["Operation"] = "ItemLookup";
    r1["ItemId"] = ITEM_ID;
    r1["ResponseGroup"] = "Medium";
    r1["IdType"] = "EAN";
    r1["SearchIndex"] = "Books";
    r1["AssociateTag"] = MY_ASSOCIATE_TAG;  // Required from API Version 2011-08-01

    var requestUrl = helper.Sign(r1);

    // リクエスト送信
    var client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
    client.DownloadStringAsync(new Uri(requestUrl));
}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    // XMLをパースする
    var xml = XElement.Parse(e.Result);
}


CodePlexには実際にWindows Phoneのアプリで動かすサンプルもあるので参考にしてもらえたらと思います。