对亚马逊产品广告 API 的 Java REST 请求失败

Posted

技术标签:

【中文标题】对亚马逊产品广告 API 的 Java REST 请求失败【英文标题】:Java REST request to Amazon Product Advertising API failing 【发布时间】:2012-08-25 03:57:12 【问题描述】:

我想使用亚马逊产品广告 API 搜索产品。

我已经开始使用 Java 示例代码来搜索产品 (com.advertising.api.sample)。

编译并运行良好,但给出空指针异常,因为解析响应假定一切正常(对于示例来说没问题)。

所以,我使用 'curl' 进行相同的查询....

curl http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=&ItemId=0545010225&Operation=ItemLookup&ResponseGroup=Small&Service=AWSECommerceService&Timestamp=2012-08-30T11%3A31%3A54Z&Version=2009-03-31&Signature=

显示此输出:

[1] 17603 [2] 17604 [3] 17605 [4] 17606 [5] 17607 [6] 17608 [7] 17609 [2] 完成项目 ID=0545010225 [3] 完成操作=ItemLookup [4] 完成响应组=小 [5] 完成服务=AWSECommerceService [6] 完成时间戳=2012-08-30T11%3A31%3A54Z [7] 完成版本=2009-03-31

并且 XML 返回描述了错误:

AWS.MissingServiceParameter您的请求缺少服务参数。请添加服务参数

但是,正如您从 curl 命令输入和日志记录中看到的那样,服务参数存在并设置为:API 指定的 AWSECommerceService

我意识到我可能做错了什么,但它似乎不是服务参数,并且很难找到该错误响应的另一个问题的根源。

有什么想法吗?

【问题讨论】:

【参考方案1】:

有趣的是,如果我从浏览器发出相同的请求,我会得到不同的响应: (略)

您的请求缺少必需的参数。必需的参数包括 AssociateTag。

因此,您需要修改 Java REST 示例代码以在请求中包含强制性的“AssociateTag”参数。我这样做是为了修改 SignedRequestHelper 类。

然后它起作用了,你得到了预期的响应。

【讨论】:

【参考方案2】:

我发现问题是 associateTag 是必需的。我添加了 associateTag 并且示例代码有效。

【讨论】:

以上是关于对亚马逊产品广告 API 的 Java REST 请求失败的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊产品广告 API - 使用 Java/SOAP 批量查找商品时出现 503 错误

使用亚马逊产品广告 API - Python 搜索书籍

亚马逊产品广告 api 获取带有优惠的产品

如何从亚马逊的产品广告 API 中获取产品名称?

没有亚马逊产品广告 API 的亚马逊 ASIN 到 ISBN

使用亚马逊产品广告 API 获得特殊的“促销”价格