具有内容长度和内容类型限制的可靠Java HTTP请求

时间:2012-04-26 12:58:13

标签: java http timeout request limits

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

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

有apache http客户端那些选项吗? 我知道经过多次连接之后,一小部分都完全挂起很长时间并且甚至不响应处理信号 - 但是在其他线程中运行页面提取时可以省略这个问题,你可以在一些时间限制后忘记。 但是我仍然没有找到解决问题的方法。

另外我的目标是避免很多被遗忘的僵尸线程下载大量文件,因此停止下载是一个优先事项。

2 个答案:

答案 0 :(得分:0)

使用httpclient或httpURLConnection:

  1. response.getHeadersconnection.getHeaderField
  2. 在n个字​​节之后停止读取循环
  3. 在t之后停止读取循环(只需检查System.currentTimeMillis()

答案 1 :(得分:0)

  1. HttpRequestExecutor.doReceiveResponse(...)根据内容进行过滤。

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

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

  4. 所有这些都需要您的一些努力。