0

我完全有能力使用 Product Advertising API 生成 LookupItem 请求,包括使用参数构建 URL 字符串并签署请求,但是当我尝试采用模型时,我为 MWS RequestReport 请求修改它,我收到此错误消息:

“提供的部分名称或版本无效 - onca/2011-01-01”

出于某种神秘的原因,我的参数显然是:

Map<String, String> params = new HashMap<String, String>();
    params.put("Action", "RequestReport");
    params.put("Version", "2011-01-01"); //NOT "onca/2011-01-01" (version may be old)
    params.put("SellerId", MERCHANT_ID);
    params.put("SignatureVersion", "2");
    params.put("SignatureMethod", "HmacSHA256");
    params.put("ReportType", "_GET_MERCHANT_LISTINGS_DATA_");
    //timestamp and signature params are added in the method that signs this request
    requestUrl = helper.sign(params);

我在这里想念什么?签署这个“规范查询字符串”的方法也没有添加它,正如我前面提到的,它成功签署了 LookupItem 请求。这是否与亚马逊解释签名的方式有关?但是,它不会说 URL/编码不匹配吗?有什么理论吗?需要更多代码或信息吗?

4

1 回答 1

0

我发现了解决方案:使用 AWS,请求以 ecs.amazonaws.com/onca/xml 开头?和 MWS 与 mws.amazonservices.com?(在我们中)。当我将端点更改为 MWS 端点时,我未能立即删除位于我的代码中某处的“/onca/xml”的串联。出于某种原因,亚马逊将我的“版本”参数解释为以“/onca/xml”开头,尽管 URL 中不是这种情况,或者它是签名中的第一个参数。那好吧。

对于修改 AWS 签名请求帮助程序的任何人,请确保在更改端点后删除“/onca/xml”的任何串联!

于 2013-12-23T17:47:36.650 回答