ResponseHandler
подпись параметра задана и не может быть изменена.
Но ничто не мешает вам использовать пользовательскую функцию, не так ли?
static class HttpRequestExecutor implements Closeable {
private final CloseableHttpClient httpClient;
public HttpRequestExecutor(final CloseableHttpClient httpClient) {
this.httpClient = httpClient;
}
public <P, T> T execute(final HttpHost target,
final HttpRequest request,
final HttpContext context,
final P parameter,
final BiFunction<HttpResponse, P, T> handler) throws IOException {
try (final CloseableHttpResponse response = httpClient.execute(target, request, context)) {
final T result = handler.apply(response, parameter);
EntityUtils.consume(response.getEntity());
return result;
}
}
@Override
public void close() throws IOException {
httpClient.close();
}
}
public static void main(String[] args) throws Exception {
final HttpRequestExecutor executor = new HttpRequestExecutor(HttpClients.createSystem());
final HttpHost httpHost = new HttpHost("httpbin.org");
final HttpUriRequest request = RequestBuilder.get("/").build();
final HttpClientContext context = HttpClientContext.create();
executor.execute(httpHost, request, context, Void.TYPE, (httpResponse, voidClass) -> null);
}