对亚马逊产品广告 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 错误