java - 在达到超时之前关闭 HttpClient 连接

标签 java httpclient

我目前正在使用 HTTPClient 4 像这样向远程服务器发出 POST 请求:

  HttpResponse response = httpClient.execute( request );
  InputStream is = response.getEntity().getContent();

当服务器不可访问时,在连接实际超时之前需要一段自行配置的时间。在此期间,execute() 是一个阻塞调用。

我正在寻找的是一种在自然超时之前取消 execute() 的方法,这样我运行 execute() 的线程就不会再被阻塞,并且会正常完成。

我试过了

request.abort();

httpClient.getConnectionManager().shutdown();

但是这两个调用都不会中断 execute()。有没有其他方法可以取消正在进行的连接尝试?

最佳答案

将调用包装在 Future 中并调用 get with timeout .

关于java - 在达到超时之前关闭 HttpClient 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669948/

相关文章:

java - postData 无法解析为类型

java - 当我将对象放入正文时,我得到不同的字段名称

Java wait()/notify() 不能在同一个对象中工作?

java - Maven 构建 list 不包含类路径。

android - https 获取服务器证书

java - 使用 Android 发布 XML 文件

java - 使用 HttpClient 时发生致命异常

java - 强制 Dropwizard/Jersey 在端点之间进行方法调用而不是网络调用

java - 一起使用 Spring jSTL 和 spring 表单标签

java - 数据属性的 OWL 类表达式