我正在使用Amazon的Java MWS API。最近,由于限制限制,我在请求GetOrder
时收到内部错误。
如何确定节流极限?
在docs中,我看到了
Amazon MWS在每个调用响应中提供标头值,这些标头值显示当前操作的每小时配额。配额中剩余的通话数量;以及重新设置配额的日期和时间。例如:
x-mws-quota-max:3600
x-mws-quota-remaining:10
x-mws-quota-resetsOn:2013年3月6日,星期三,格林尼治标准时间
但是我不知道如何从响应中获取此元数据。我希望它们位于通过调用GetReportResponse
收到的getReport(GetReportRequest)
中。似乎该数据不存在。至少我无法得到它们。
但是我从日志输出中看到的是:
org.apache.http.wire-< org.apache.http.wire-< org.apache.http.wire-<
这些数据确实确实存在于某处。如何从响应中获取此信息?
最佳答案
同时,我在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();
这对我有用,我可以直接从客户端获取配额值。