【问题标题】:Multiple execution by apache httpclientapache httpclient 多次执行
【发布时间】:2015-10-18 00:04:14
【问题描述】:

所以事情就是这样,我需要访问一个非常繁忙的站点,而我只需要一个请求就无法访问。

所以我想要的是使用 Apache HttpClient 或其他好的 java 库对同一个网址发出多个请求,并等待站点的成功响应。一旦请求获得成功响应,线程中的所有其他请求都需要立即终止。

我该怎么做?另外,如果有其他好的库可用于该任务,请告诉我。

【问题讨论】:

  • 您本质上是想要对站点进行 DOS 操作,这会导致站点比它需要的更忙。听起来不道德。
  • 如果我想 DOS 站点,我会简单地使用多个线程,而不是在成功响应后停止它。@JoseMartinez
  • 你可以阻止你的代码等待响应,但是服务器会继续浪费资源。

标签: java http apache-httpclient-4.x apache-httpcomponents


【解决方案1】:

我的建议是使用单线程并在出现错误时重试。这样您就不会淹没繁忙的站点。这不会慢很多,因为如果服务器很忙,发出更多的请求不会给你带来任何好处。 如果您决定使用多个线程(使用 2),所有线程都需要共享同一个 HTTP 客户端:

CloseableHttpClient httpclient = createDefault();

当您收到成功的回复时,您必须致电

 httpclient.close();

并停止所有线程。 close() 将终止所有连接(活动和非活动)。

【讨论】:

  • 谢谢。现在我清楚了。顺便说一句,如果我增加超时时间会有帮助吗?
  • 是的,如果服务器/连接速度很慢,增加超时将有更多帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多