将 CloseableHttpClient 与 try-with-resources 结合使用
Using CloseableHttpClient with try-with-resources
我一直在使用 try-with-resources 搜索 CloseableHttpClient
的完整示例。我对关闭 CloseableHttpClient
是否也会关闭将在我调用 httpclient.execute(post)
时创建的 CloseableHttpResponse
对象感到困惑。我是否也需要将 CloseableHttpResponse
包装在 try-with-resources 中?
示例:
try(CloseableHttpClient httpclient = HttpClients.custom().build()) {
HttpPost post = new HttpPost(url);
CloseableHttpResponse res = httpclient.execute(post);
// do something with res
} catch (Throwable e) {
// do something with error
}
如果您想让响应参与资源尝试,您可以这样做。虽然当您已经捕捉到异常时,您可以以 } 结束 - 不需要额外的捕捉。
从技术上讲 CloseableHttpResponse is empty[=13= 中的 close ()
的实现不是必需的]
根据 httpcomponents 文档 (https://hc.apache.org/httpcomponents-client-4.5.x/quickstart.html)
,您需要关闭 CloseableHttpResponse 以释放资源
哦。 不要捕获 Throwable - 这是一种糟糕的风格,会导致很难发现错误。
我一直在使用 try-with-resources 搜索 CloseableHttpClient
的完整示例。我对关闭 CloseableHttpClient
是否也会关闭将在我调用 httpclient.execute(post)
时创建的 CloseableHttpResponse
对象感到困惑。我是否也需要将 CloseableHttpResponse
包装在 try-with-resources 中?
示例:
try(CloseableHttpClient httpclient = HttpClients.custom().build()) {
HttpPost post = new HttpPost(url);
CloseableHttpResponse res = httpclient.execute(post);
// do something with res
} catch (Throwable e) {
// do something with error
}
如果您想让响应参与资源尝试,您可以这样做。虽然当您已经捕捉到异常时,您可以以 } 结束 - 不需要额外的捕捉。
从技术上讲 CloseableHttpResponse is empty[=13= 中的 close ()
的实现不是必需的]
根据 httpcomponents 文档 (https://hc.apache.org/httpcomponents-client-4.5.x/quickstart.html)
,您需要关闭 CloseableHttpResponse 以释放资源哦。 不要捕获 Throwable - 这是一种糟糕的风格,会导致很难发现错误。