亚马逊MWS - 请求库存报告时出错

时间:2013-09-22 18:01:09

标签: java api amazon-web-services

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

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

出于一些神秘的原因,它会在日期的开头不断添加“ onca / ”,而我的参数显然是:

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 /编码不匹配吗?任何理论?需要更多代码或信息吗?

1 个答案:

答案 0 :(得分:0)

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

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