アマゾンProduct Advertising APIの仕様変更について

昨日、Amazon Associate JP plugin が落ちるようになっていたのだが、その原因が判明したのでメモ。

今日は、動いてるっぽい。

もとをたどれば、2月9日付けで届いたメール。

件名:重要:アマゾンProduct Advertising APIの仕様変更について

差出人は、Amazon.com Product Advertising API。いや、実は、このメールの前にもなんかメール受け取ってた気がするんだけど、遠い記憶の彼方。

AmazonってAmazon Web Services Newsletterとして毎月、メールを送ってくるんだよね。英文で。ざっくり読んですっかり忘れてたんだけど、古いAPIのサポートをやめるって話。

要するに、「2012年2月22日をもちまして2011-08-01バージョンを除くすべての旧バージョンのサポートを終了させていただきます。」とのこと。

メールを読むと、2012年2月7日15:00 – 19:00と2月13日 0:00 – 12:59の2回、実際の変更内容を体験する機会が用意された模様。

あー、昨日動かなかったのは、これが原因ね。で、期間が過ぎたので、今は動いていると。で、2月22日に終了という。

で、Amazon Associate JP pluginが使っているAPIは、2009-10-01。はい、サポート終了の対象です。ということで、2月22日までに最新のAPIに更新せねばなりません。

うーん。めんどくせ。最後にリリースしたのは2009年10月31日、Version 1.4.3。当時のビルドはVisual Studio 2008。インストーラを作るWixに至ってはVersion2。

あれから、MacOSをLionにしたついでに、Windows環境をBootcampからVMWare Fusionにインストールしなおしちゃったんで、開発環境から作りなおさなきゃ。

ということで、Visual Studio 2010。

前のコードはVisual Studio 2008のslnなので、2010に変換。

ソリューション エクスプローラーの参照設定で、Microsoft.Web.Servies3とWindowsLive.Writer.Apiが外れてる。WindowsLive.Writer.Apiは使っているOSが64bitなので、パスがC:Program FilesWindows LiveWriterになっているのをC:Program Files (x86)Windows LiveWriter方向に変更。

その他、デバッグを楽にするために、ビルド結果の出力先をC:Program FilesWindows LiveWriterPluginsからC:Program Files (x86)Windows LiveWriterPluginsに変更。

Microsoft.Web.Services3はすっかり忘れてたわ。Amazonのサンプルコードで使っていたのでそのまま。Web Services Enhancements (WSE) 3.0 for Microsoft .NETをインストール。プロジェクトの参照が更新されたのを確認。

Web Referencesをhttp://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdlで更新。reference.csを見ると、WebServiceBindingAttributeのNamespaceがhttp://webservices.amazon.com/AWSECommerceService/2011-08-01になっている。ふ〜ん。

コンパイルするとエラー。どうもwsdlの定義がまちがってるっぽ。

reference.csの2930行目

private ImageSet[][] imageSetsField;

private ImageSet[] imageSetsField;

に変更。

3058行目

public ImageSet[][] ImageSets {

public ImageSet[] ImageSets {

に変更。

あれ?まだビルドエラー。SetPolicy関数とDestinationプロパティが無い。あれれ?

32行目の

public partial class AWSECommerceService : System.Web.Services.Protocols.SoapHttpClientProtocol {

public partial class AWSECommerceService : Microsoft.Web.Services3.WebServicesClientProtocol {

にベースクラスを変更するのを忘れてた。

ビルドして動作確認。よさげ。。。。

Wixの3.5をインストールして、、、あ、インストールの定義が2.0のまま。これ書きなおさなきゃなぁ。このインストーラができたらVer 1.4.4として完成かな。2月22日までってことは今週末が締め切りかぁ。

「アマゾンProduct Advertising APIの仕様変更について」への2件のフィードバック

  1. 対応、お疲れ様です!
    これでAWS使い続けられるので、助かります;;
    古いコードをいじるのって大変ですよね……

  2. とおりすがりです。

    私も同様の悩みを抱えていました。

    私はここにあったサンプルを使っていました。
    http://aws.amazon.com/code/Product-Advertising-API/2481

    Microsoft.Web.Servies3を使っていますがWEB参照というわけではないので
    WSDL更新もできず途方に暮れていましたが、

    WSEのWseWsdl3コマンドを使って、新しいWSDL用のプロキシクラスを再作成し、なんとか動くようになりました。
    http://msdn.microsoft.com/en-us/library/aa529578.aspx

    ImageSetの箇所はご指摘の通りWSDLが間違っているみたいで、参考になりました。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください