0

我正在寻找具有这些功能的可靠(防挂起)方式来获取 Java 中的 HTTP 页面:

  • 如果标题中的内容类型不是文本/...,则停止获取页面
  • 如果加载的数据超过字节限制(并且未设置内容长度作为响应),您可以随时停止获取页面
  • 您可以在给定的时间限制内停止获取页面

apache http 客户端有这些选项吗?我知道在多次连接之后,所有的一小部分完全挂起很长时间,甚至对进程信号也没有响应 - 但是这个问题可以在其他线程中运行页面获取时被忽略,你可以在一段时间后忘记. 但是我仍然没有找到给定问题的解决方案。

此外,我的目标是避免大量被遗忘的僵尸线程下载大文件,因此停止错误下载是这里的首要任务。

4

2 回答 2

0

使用 httpclient 或 httpURLConnection:

  1. response.getHeaders或者connection.getHeaderField
  2. 在 n 个字节后停止读取循环
  3. 在 t 之后停止读取循环(只需检查System.currentTimeMillis()
于 2012-04-26T13:30:53.863 回答
0
  1. HttpRequestExecutor.doReceiveResponse(...)根据内容进行过滤。

  2. org.apache.http.message.BasicLineParser#parseRequestLine(...)使用最大光标右侧位置的设置限制覆盖。

  3. 您可以覆盖HttpRequestExecutor.preProcess(...)以设置计时器到期。

所有这些都需要您付出一些努力。

于 2012-04-26T13:35:20.367 回答