use of org.apache.hc.client5.http.impl.classic.CloseableHttpClient in project weicoder by wdcode.
the class HttpClient5 method init.
/**
* 初始化httpclient
*
* @return CloseableHttpClient
*/
private static CloseableHttpClient init() {
// Http连接池
PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager();
pool.setDefaultMaxPerRoute(C.O.CPU_NUM);
pool.setMaxTotal(HttpParams.HTTP_MAX);
// 设置请求参数
RequestConfig.Builder config = RequestConfig.custom();
config.setConnectionRequestTimeout(Timeout.ofSeconds(W.C.toLong(HttpParams.HTTP_TIMEOUT)));
config.setConnectTimeout(Timeout.ofSeconds(W.C.toLong(HttpParams.HTTP_TIMEOUT)));
config.setCircularRedirectsAllowed(false);
// HttpClientBuilder
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setDefaultRequestConfig(config.build());
builder.setConnectionManager(pool);
// builder.setMaxConnPerRoute(SystemConstants.CPU_NUM);
// 设置 头
List<BasicHeader> headers = Lists.newList();
headers.add(new BasicHeader(C.H.USER_AGENT_KEY, C.H.USER_AGENT_VAL));
headers.add(new BasicHeader(C.H.ACCEPT_KEY, C.H.ACCEPT_VAL));
builder.setDefaultHeaders(headers);
// 实例化客户端
return builder.build();
}
use of org.apache.hc.client5.http.impl.classic.CloseableHttpClient in project ksql by confluentinc.
the class DefaultConnectClient method buildHttpClient.
/**
* Uses defaults from Request.execute(), except with an explicit SSLSocketFactory to pass
* custom SSL configs. Link to default below:
* https://github.com/apache/httpcomponents-client/blob/3734aaa038a58c17af638e9fa29019cacb22e82c/httpclient5-fluent/src/main/java/org/apache/hc/client5/http/fluent/Executor.java#L62-L72
*/
private static CloseableHttpClient buildHttpClient(final Optional<SSLContext> sslContext, final boolean verifySslHostname) {
final PoolingHttpClientConnectionManagerBuilder connectionManagerBuilder = PoolingHttpClientConnectionManagerBuilder.create();
sslContext.ifPresent(ctx -> {
final SSLConnectionSocketFactory socketFactory = verifySslHostname ? new SSLConnectionSocketFactory(ctx) : new SSLConnectionSocketFactory(ctx, (hostname, session) -> true);
connectionManagerBuilder.setSSLSocketFactory(socketFactory);
});
return HttpClientBuilder.create().setConnectionManager(connectionManagerBuilder.setMaxConnPerRoute(100).setMaxConnTotal(200).setValidateAfterInactivity(TimeValue.ofSeconds(10L)).build()).useSystemProperties().evictExpiredConnections().evictIdleConnections(TimeValue.ofMinutes(1L)).build();
}
use of org.apache.hc.client5.http.impl.classic.CloseableHttpClient in project ksql by confluentinc.
the class WebClient method send.
/**
* Sends a POST request to a web server
* This method requires a pre-configured http client instance
*
* @param customerId customer Id on behalf of which the request is sent
* @param bytes request payload
* @param httpPost A POST request structure
* @param proxy a http (passive) proxy
* @param httpClient http client instance configured by caller
* @return an HTTP Status code
* @see #send(String, byte[], HttpPost, ResponseHandler)
*/
@SuppressWarnings({ "checkstyle:CyclomaticComplexity", "checkstyle:FinalParameters" })
protected static int send(final String customerId, final byte[] bytes, final HttpPost httpPost, final HttpHost proxy, CloseableHttpClient httpClient, final ResponseHandler responseHandler) {
int statusCode = DEFAULT_STATUS_CODE;
if (bytes != null && bytes.length > 0 && httpPost != null && customerId != null) {
// add the body to the request
final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.LEGACY);
builder.addTextBody("cid", customerId);
builder.addBinaryBody("file", bytes, ContentType.DEFAULT_BINARY, "filename");
httpPost.setEntity(builder.build());
httpPost.addHeader("api-version", "phone-home-v1");
// set the HTTP config
RequestConfig config = RequestConfig.custom().setConnectTimeout(Timeout.ofMilliseconds(REQUEST_TIMEOUT_MS)).setConnectionRequestTimeout(Timeout.ofMilliseconds(REQUEST_TIMEOUT_MS)).setResponseTimeout(Timeout.ofMilliseconds(REQUEST_TIMEOUT_MS)).build();
CloseableHttpResponse response = null;
try {
if (proxy != null) {
log.debug("setting proxy to {}", proxy);
config = RequestConfig.copy(config).setProxy(proxy).build();
httpPost.setConfig(config);
final DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
if (httpClient == null) {
httpClient = HttpClientBuilder.create().setRoutePlanner(routePlanner).setDefaultRequestConfig(config).build();
}
} else {
if (httpClient == null) {
httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
}
}
response = httpClient.execute(httpPost);
if (responseHandler != null) {
responseHandler.handle(response);
}
// send request
log.debug("POST request returned {}", new StatusLine(response).toString());
statusCode = response.getCode();
} catch (IOException e) {
log.error("Could not submit metrics to Confluent: {}", e.getMessage());
} finally {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
log.warn("could not close http client", e);
}
}
if (response != null) {
try {
response.close();
} catch (IOException e) {
log.warn("could not close http response", e);
}
}
}
} else {
statusCode = HttpStatus.SC_BAD_REQUEST;
}
return statusCode;
}
use of org.apache.hc.client5.http.impl.classic.CloseableHttpClient in project pact-jvm by DiUS.
the class HttpClient method insecureHttpClient.
static CloseableHttpClient insecureHttpClient() {
SSLContext sslContext = null;
try {
sslContext = SSLContexts.custom().loadTrustMaterial(new TrustSelfSignedStrategy()).build();
} catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) {
throw new RuntimeException(e);
}
SSLConnectionSocketFactory socketFactory = SSLConnectionSocketFactoryBuilder.create().setSslContext(sslContext).build();
CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager(new BasicHttpClientConnectionManager(RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", socketFactory).build())).build();
return httpClient;
}
use of org.apache.hc.client5.http.impl.classic.CloseableHttpClient in project weicoder by wdcode.
the class HttpClient method init.
/**
* 初始化httpclient
*
* @return CloseableHttpClient
*/
private static CloseableHttpClient init() {
// Http连接池
PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager();
pool.setDefaultMaxPerRoute(SystemConstants.CPU_NUM);
pool.setMaxTotal(HttpParams.HTTP_MAX);
// 设置请求参数
RequestConfig.Builder config = RequestConfig.custom();
config.setConnectionRequestTimeout(Timeout.ofSeconds(W.C.toLong(HttpParams.HTTP_TIMEOUT)));
config.setConnectTimeout(Timeout.ofSeconds(W.C.toLong(HttpParams.HTTP_TIMEOUT)));
config.setCircularRedirectsAllowed(false);
// HttpClientBuilder
HttpClientBuilder builder = HttpClientBuilder.create();
builder.setDefaultRequestConfig(config.build());
builder.setConnectionManager(pool);
// builder.setMaxConnPerRoute(SystemConstants.CPU_NUM);
// 设置 头
List<BasicHeader> headers = Lists.newList();
headers.add(new BasicHeader(HttpConstants.USER_AGENT_KEY, HttpConstants.USER_AGENT_VAL));
headers.add(new BasicHeader(HttpConstants.ACCEPT_KEY, HttpConstants.ACCEPT_VAL));
builder.setDefaultHeaders(headers);
// 实例化客户端
return builder.build();
}
Aggregations