【发布时间】:2020-02-24 14:44:49
【问题描述】:
正如我们从httpclient-4.5.x quick start 中看到的,“为了确保系统资源的正确释放,用户必须从 finally 子句中调用 CloseableHttpResponse#close()。”
但是,让我们检查一下 HttpRequestBase#releaseConnection() 的代码。注释说“一种简化从 HttpClient 3.1 API 迁移的便捷方法。此方法等效于 {@link #reset()}。”
public abstract class HttpRequestBase extends AbstractExecutionAwareRequest
implements HttpUriRequest, Configurable {
......
/**
* A convenience method to simplify migration from HttpClient 3.1 API. This method is
* equivalent to {@link #reset()}.
*
* @since 4.2
*/
public void releaseConnection() {
reset();
}
....
}
我想问一下,既然我们只需要在 finally 子句中调用 CloseableHttpResponse#close() 来释放资源,那么 HttpRequestBase#releaseConnection() 是用来做什么的呢? AbstractExecutionAwareRequest#reset() 用于什么?我们什么时候应该使用 HttpRequestBase#releaseConnection() 或 AbstractExecutionAwareRequest#reset()。
【问题讨论】:
-
这里有同样的问题。 here有人说这是一种释放连接的方法,但我认为根据文档不是这样。
标签: java httpclient