获得亚马逊MWS限制

时间:2016-01-23 09:23:17

标签: java amazon-web-services amazon-mws

我正在使用亚马逊的Java MWS API。最近我在请求GetOrder时收到内部错误,这是由于限制限制造成的。

如何确定限制限制?

docs我看到了

  

亚马逊MWS在每个呼叫响应中提供标头值,显示当前操作的每小时配额;配额剩余的通话次数;以及配额重置的日期和时间。例如:

     

x-mws-quota-max:3600
  x-mws-quota-remaining:10
  x-mws-quota-resetsOn:Wed,06 Mar 2013 19:07:58 GMT

但我无法弄清楚如何从响应中获取此元数据。我希望它们在我通过调用GetReportResponse收到的getReport(GetReportRequest)中。看来这个数据不存在。至少我无法得到它们。

但是我从日志输出中看到的是:

  

org.apache.http.wire - << " x-mws-quota-max:80.0"
  org.apache.http.wire - << " x-mws-quota-remaining:79.0"
  org.apache.http.wire - << " x-mws-quota-resetsOn:2016-01-23T09:19:00.000Z"

这个数据确实似乎存在于某个地方。如何从响应中获取此信息?

1 个答案:

答案 0 :(得分:3)

与此同时,我在MWS client来源中闯了一下 实际上,配额值不是通过响应也不是通过WebServiceClient公开的 所以我稍微修改了MarketplaceWebServiceClient.java的源代码,以重新记录上次收到的响应的配额值。 在第2100行的某处,它显示为postResponse = httpClient.execute(method, httpContext); 然后我插入

  

quotaMax = postResponse.getFirstHeader(“x-mws-quota-max”)。getValue();   
quotaRemaining = postResponse.getFirstHeader(“x-mws-quota-remaining”)。getValue();
quotaResetsOn = postResponse.getFirstHeader(“x-mws-quota-resetsOn”)。getValue();

这对我有用,我可以直接从客户端获取配额值。