首页 文章

在达到timout之前关闭HttpClient连接

提问于
浏览
6

我目前正在使用HTTPClient 4向远程服务器发出POST请求,如下所示:

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

当服务器无法访问时,在连接实际超时之前需要一段自我配置的时间 . 在那个periode期间,execute()是一个阻塞调用 .

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

我试过了

request.abort();

httpClient.getConnectionManager().shutdown();

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

2 回答

  • 0

    将呼叫包裹在Future中并调用get with timeout .

  • 1

    我想你可以使用这些方法设置你想要的最大时间的connectionTimeout: setConnectionTimeout()

    setSoTimeout()
    

相关问题