I думаю, CloseableHttpResponse
необходимо будет закрывать вручную каждый отдельный запрос.
Есть несколько способов сделать это.
С попыткой /блок catch / finally:
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;
public class CloseableHttpClientWithTryCatchFinally {
public static void main(String... args) throws Exception {
URIBuilder uriBuilder = new URIBuilder("https://www.google.com/");
HttpGet httpGet = new HttpGet(uriBuilder.build());
CloseableHttpClient client = HttpClients.custom().build();
CloseableHttpResponse response = null;
try {
response = client.execute(httpGet);
response.getEntity().writeTo(System.out);
} catch (IOException e) {
System.out.println("Exception: " + e);
e.printStackTrace();
} finally {
if (response != null) {
response.close();
}
}
}
}
Я думаю, что лучшим ответом будет использование оператора try-with-resources :
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;
public class CloseableHttpClientTryWithResources {
public static void main(String... args) throws Exception {
URIBuilder uriBuilder = new URIBuilder("https://www.google.com/");
HttpGet httpGet = new HttpGet(uriBuilder.build());
CloseableHttpClient client = HttpClients.custom().build();
try (CloseableHttpResponse response = client.execute(httpGet)) {
response.getEntity().writeTo(System.out);
} catch (IOException e) {
System.out.println("Exception: " + e);
e.printStackTrace();
}
}
}
В общем, я имеюувиденные люди просто создают один CloseableHttpClient
для своего приложения, а затем просто повторно используют этот экземпляр в своем приложении.Если вы собираетесь использовать один или несколько экземпляров снова и снова, то нет, я не думаю, что вам нужно их закрывать.Однако, если вы собираетесь создавать новые экземпляры CloseableHttpClient
снова и снова, тогда да, вам нужно будет их закрыть.