获取 “线程中的异常”main“java.io.IOException:服务器返回HTTP响应代码:URL为URL ”当我对Amazon产品进行多次调用时出错广告API。
服务超载的原因是什么? 一种可能的解决方案是使用Thread.Sleep(毫秒)方法。
但还有其他更复杂的解决方案吗?像代理什么的?
以下是用于建立连接的代码:
URL amazon = new URL(url);
URLConnection yc = amazon.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
我正在使用Java!
答案 0 :(得分:3)
来自定义这些状态代码的http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:
10.5.4 503服务不可用
由于服务器的临时过载或维护,服务器当前无法处理请求。这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解。如果已知,则可以在Retry-After报头中指示延迟的长度。如果没有给出Retry-After,客户端应该像处理500响应一样处理响应。注意:503状态代码的存在并不意味着服务器在变得过载时必须使用它。有些服务器可能希望简单地拒绝连接。
所以是的,服务器过载可能是原因。要弄清楚如何处理这个问题,你可能想与操作该服务的人讨论它,以了解他们可以容忍的内容。然后,如果您搜索"限制网络请求"在SO上,一旦您了解了您的要求,就会发现一些关于如何实施限制的讨论。
修改强>
现在我看到你正在谈论亚马逊广告API,快速搜索让我进入了这个页面:http://docs.aws.amazon.com/AWSECommerceService/latest/DG/TroubleshootingApplications.html
该页面上的效率指南非常清楚地说明会触发问题的原因以及可接受的请求率。
答案 1 :(得分:1)
HTTP 503表示请求的服务不可用。
可能是由于,
1)服务器可能正忙
2)服务器可能已关闭以进行维护
如果您访问service
并收到此错误,请尝试与service
所有者联系,了解正在进行的操作。
如果您是该服务的所有者,请检查日志中的错误以找出问题。
如果您只是从客户端类创建了许多与服务的连接,并且出现此错误,那么您需要考虑为什么需要创建这么多连接。