コメントが入ったので http://ameblo.jp/smartjava/day-20100217.html
もう少し kwsk 書きます。
SOAPによるAmazonのWebService ItemSearch を行った場合
のリクエストは以下のようになります。
<soapenv:Envelope
xmlns:q0="http://webservices.amazon.com/AWSECommerceService/2009-11-01
"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
"
xmlns:xsd="http://www.w3.org/2001/XMLSchema
"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
">
<soapenv:Header></soapenv:Header>
<soapenv:Body>
<q0:ItemSearch>
<q0:AWSAccessKeyId>xxxxxxxxxxxxxxxxxx</q0:AWSAccessKeyId>
<q0:Signature>xxxxxxxxxxxxxxxxxxxxxxxxx=</q0:Signature>
<q0:Timestamp>2010-02-17T10:45:21Z</q0:Timestamp>
<q0:Shared>
<q0:Keywords>俺流amazonの作り方</q0:Keywords>
<q0:SearchIndex>Books</q0:SearchIndex>
</q0:Shared>
</q0:ItemSearch>
</soapenv:Body>
</soapenv:Envelope>
AWSAccessKeyId は英語版Amazonにユーザ登録をして取得できます。
timestampは検索するときの時間をグリニッジ標準時(Greenwich Mean Time, GMT)を入れます。
signatureはオペレーション名+timestamp で結合された文字列を秘密鍵で暗号化した値を入れます
例えば、"ItemSearch2010-02-17T10:45:21Z" という文字列を暗号化すれば良いです。
もちろん、timestampは暗号化するものと、単体で送るものと同じ値をセットなければいけません。
検索したいカテゴリは 本 なので Books といれました。
キーワードが必須のようなので 俺流amazonの作り方 としました。
上記のような電文を送信すると↓のようなレスポンスが返ってきました。
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/
"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/
"
xmlns:xsd="http://www.w3.org/2001/XMLSchema
"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
">
<SOAP-ENV:Body>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2009-11-01
">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="IBM Web Services Explorer" />
</HTTPHeaders>
<RequestId>14KN2XVP7N45KS1MV4DW</RequestId>
<Arguments>
<Argument Name="Service" Value="AWSECommerceService" />
</Arguments>
<RequestProcessingTime>0.0448980331420898</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
</Request>
<TotalResults>1</TotalResults>
<TotalPages>1</TotalPages>
<Item>
<ASIN>4756146759</ASIN>
<DetailPageURL>http://www.amazon.co.jp/%E4%BF%BA%E6%B5
%81amazon%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9%E2%80%95
Amazon-Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E6%9C%
80%E6%96%B0%E6%B4%BB%E7%94%A8%E3%83%86%E3%82%AF%E3%83%
8B%E3%83%83%E3%82%AF-%E6%B0%B4%E9%87%8E-%E8%B2%B4%E6%
98%8E/dp/4756146759%3FSubscriptionId%xxxxxxxxxxxxxx%26tag%3
Dws%26linkCode%3Dsp1%26camp%3D2025%26creative
%3D165953%26creativeASIN%3D4756146759</DetailPageURL>
<ItemLinks>
<ItemLink>
<Description>Add To Wishlist</Description>
<URL>http://www.amazon.co.jp/gp/registry/wishlist
/add-item.html%3Fasin.0%3D4756146759%26SubscriptionId%3D
xxxxxxxxxxxxxxx%26tag%3Dws%26linkCode%3Dsp1%26camp
%3D2025%26creative%3D5143%26creativeASIN%3D4756146759</URL>
</ItemLink>
<ItemLink>
<Description>Tell A Friend</Description>
<URL>http://www.amazon.co.jp/gp/pdp/taf/4756146759%3FSubscriptionId
%3Dxxxxxxxxxxxxxxx%26tag%3Dws%26linkCode
%3Dsp1%26camp%3D2025%26creative%3D5143%26creative
ASIN%3D4756146759
</URL>
</ItemLink>
<ItemLink>
<Description>All Customer Reviews</Description>
<URL>http://www.amazon.co.jp/review/product/4756146759%3FSubscriptionId
%3Dxxxxxxxxxxxxxxxxxxxxx%26tag%3Dws%26linkCode
%3Dsp1%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4756146759
</URL>
</ItemLink>
<ItemLink>
<Description>All Offers</Description>
<URL>http://www.amazon.co.jp/gp/offer-listing/4756146759%3FSubscriptionId%3D
xxxxxxxxxxxxxxxxx%26tag%3Dws%26linkCode%3Dsp1%26camp%3D2025%26creative
%3D5143%26creativeASIN%3D4756146759</URL>
</ItemLink>
</ItemLinks>
<ItemAttributes>
<Author>水野 貴明</Author>
<Creator Role="著">水野 貴明</Creator>
<Manufacturer>アスキー</Manufacturer>
<ProductGroup>Book</ProductGroup>
<Title>俺流amazonの作り方―Amazon Webサービス最新活用テクニック</Title>
</ItemAttributes>
</Item>
</Items>
</ItemSearchResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
さて
<ItemSearchResponse> => <Items(0)> => <Item(0)> => <ASIN> を引き出したかったので
assertEquals("4756146759"
,response.getItemSearchResponse().getItems[0].getItem()[0].getASIN());
というコードになりましたが、もし、作者の名前が欲しければ、
assertEquals("水野 貴明"
,response.getItemSearchResponse().getItems()[0].getItem()[0].getItemAttributes().getAuthor()[0]);
になると思います(これは試していないのでトライしてみてください)
[0]は複数の要素があるので最初のインデックスを指定することにしました。
↓AmazonでWebサービスに挑戦するならオススメです。
わかりやすいし、サンプルプログラムものっています。
俺流amazonの作り方―Amazon Webサービス最新活用テクニック/水野 貴明
- ¥2,730
- Amazon.co.jp
SOAPってXMLを送受信するんだー ふーん
と思われた方は ↓ をクリック