【问题标题】:Getting Amazon MWS throttling limits获取亚马逊 MWS 节流限制
【发布时间】:2016-01-23 09:23:17
【问题描述】:

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

如何确定节流限制?

docs我看到了

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

x-mws-quota-max: 3600
x-mws-quota-remaining:10
x-mws-quota-resetsOn:格林威治标准时间 2013 年 3 月 6 日,星期三 19:07:58

但我不知道如何从响应中获取此元数据。我希望他们在GetReportResponse 中,我通过调用getReport(GetReportRequest) 收到。好像没有这个数据。至少我没能得到它们。

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

org.apache.http.wire - org.apache.http.wire - org.apache.http.wire -

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

【问题讨论】:

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


    【解决方案1】:

    与此同时,我在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();

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

    【讨论】:

    • 我遇到了和你一样的问题:没有设置节流标头值,但是当我直接使用 Fiddler 检查标头时,我也没有找到它们。您是说您正在接收这些标头值吗?
    • 没关系。我刚刚注意到这些响应标头仅与具有 hourly 配额的 api 相关,但基本配额未提供此类标头值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多