エラーの処理

有効なリクエストを送信してもエラーが発生する可能性はありますか。答えはイエスです。リクエストに該当する商品が Amazon になかった場合は、エラーが返されます。次のリクエストは、この問題の一例です。

http://ecs.amazonaws.com/onca/xml?
Service=AWSECommerceService&
AWSAccessKeyId=[AWS アクセスキー ID]&
Operation=ItemSearch&
Condition=Refurbished&
ResponseGroup=Images&
SearchIndex=Automotive&
Title=Harry%20Potter

次のレスポンス例は、エラーを示しています。

<IsValid>True</IsValid> 
...
<Errors>
  <Error>
    <Code>AWS.ECommerceService.NoExactMatches</Code> 
    <Message>We did not find any matches for your request.
    </Message> 
  </Error>
</Errors>

自動車のセクションでハリー・ポッターの本の新装版を探しても意味がありません。よって、このケースでリクエストに該当する商品がなくても驚く必要はありません。しかし、これよりもずっと複雑なケースで同様の問題が発生することがあります。例えば、Condition のデフォルト値は "New" です。これは1つには、Amazon は新品の商品しか販売していないためです。Condition の値を指定せずにリクエストを送信して何も見つからなかった場合、リクエストに該当する商品が存在しないと思うかもしれません。しかし、Condition に "All" を設定すると、リクエストに該当する商品が見つかる場合があります。

同様のエラーメッセージは、例えば ItemLookup を使用して Amazon のカタログにない商品を検索した場合にも表示されます。

<Errors>
  <Error>
    <Code>AWS.InvalidParameterValue</Code> 
    <Message>B0111NOSUCHITEM is not a valid value for ItemId. Please change this value and retry your request.
    </Message> 
  </Error>
</Errors>

リクエストでは、ItemId に to "B0111NoSuchItem" が設定されています。エラーメッセージは、Product Advertising API で ItemId の値が全て大文字に変換されることを示しています。