我想发出一个http请求,然后返回HttpResponse对象。据我所知,如果我正确关闭HttpClient对象,这将无法工作,因为当另一个方法尝试获取返回的响应对象的getEntity()时,流将被关闭。
有没有办法强制HttpResponse对象保留响应并缓存它?
这是一个示例方法:
static HttpResponse get(String url) throws IOException {
HttpGet httpGet = new HttpGet(url);
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpResponse httpResponse = httpClient.execute(httpGet);
// do something here to persists the http response
return httpResponse;
}
}
以便另一种方法可以做到这一点:
void anotherMethod() {
HttpResponse httpResponse = Utils.get("http://domain.com/site");
String responseString = IOUtils.toString(httpResponse.getEntity().getContent());
}
我知道这可以使用流畅的界面完成。对于我的用例,我需要对DNS解析进行一些修改,以便我不能使用流畅的界面。