UNLIMITED JAVA

WEB技術や普段の生活のブログ

SOAPとAmazon

Viewの作成が一通り完了したので、次はAmazonとの接続を行う。

http://www.amazon.co.jp/exec/obidos/subst/associates/join/webservices.html/249-5764965-0472313
にて登録。

詳細な接続の方法だが、
http://www.itmedia.co.jp/enterprise/0311/24/epn02_3.html
を参照して行った。

WSDLとかはやっているうちに上手くいくだろうということで。
躓いたところをいくつか。

◇AmazonWebServices.wsdl
http://soap.amazon.com/schemas3/AmazonWebServices.wsdl
からゲッツします。

◇WSDL2Java
クラスパスをちゃんと設定しる。


で、Javaファイルが大量に生成されました。
計61コ

良く分からないので、進めていきます。

続いて、サンプルの"WebService"をコピりました。
案の定、大量のエラーコード。
Amazon関係のクラスファイルが不足しているようでつ。

Amazon関係のライブラリというと、
最初にダウンロードしたツールキットか
さっき作成された61コのファイルのどちらかしか、思いつきません。

ためしに61個の方をやると・・・

キタ━━(゜∀゜)━━ !!

赤い線のエラーがなくなりました。

さっそく実行!

キタ━━(゜∀゜)━━ !!

「Usage: WebService id」

・・・引数にBookIDを入れろとのことです。

サンプルどおりいれると・・・

>エッセンシャルJava 2nd edition
>宮坂 雅輝
>ソフトバンクパブリッシング
>¥ 2,600

エッセンシャルJavaキタ━━(゜∀゜)━━ !!

懐かしい、大学のときに使ってた本だ・・・。

とりあえず、コメントを入れて次はタイトル検索を行いまつ。


キーワード検索

さて、いよいよキーワード検索
KeywordRequest(hoge)を使用します。

まず、単純にキーワード検索するメソッドを作成
detail getDetail(String word)
で、検索できるようにします。

ソート順

Sort Type

Value

Featured Items

+pmrank

Bestselling

+salesrank

Average Customer Review

+reviewrank

Price (Low to High)

+pricerank

Price (High to Low)

+inverse-pricerank

Publication Date

+daterank

Alphabetical (A-Z)

+titlerank

Alphabetical (Z-A)

-titlerank

キーワード検索

public List getBookList(String keyword , String page){

   //返り血
   ArrayList detailsList = new ArrayList();
       
   try {    
       //Amazonサーバへの接続
       AmazonSearchService service = new
        AmazonSearchServiceLocator();
       AmazonSearchPort port =
        service.getAmazonSearchPort();            

       //リクエストの登録
       KeywordRequest request = new KeywordRequest();
       request.setDevtag("DWYW91HQZWKF");
       request.setLocale("jp");
       request.setMode("books-jp");
       request.setKeyword(keyword);
       request.setType("lite");
       request.setTag("PPPPPPPPPPPPPPPP");
       request.setPage(page);
       request.setSort("+titlerank");
   
       //リクエストの実行
       ProductInfo pinfo = (ProductInfo)
       port.keywordSearchRequest(request);
   
       //詳細を取得し、リストへ変換
       Details[] detail = pinfo.getDetails();
       detailsList = new ArrayList(Arrays.asList(detail));

   } catch (ServiceException e) {
    e.printStackTrace();
   } catch (RemoteException e) {
    e.printStackTrace();
   }
   return detailsList;
}

使用方法

while(ite.hasNext()){
  Details details = (Details)ite.next();
  System.out.println(details.getProductName()+"\n");
}