
com.cats.https.CHttpClient Maven / Gradle / Ivy
package com.cats.https;
import com.cats.common.executor.CRetry;
import com.cats.common.logger.CLogger;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import javax.ws.rs.core.UriBuilder;
public class CHttpClient {
public static CHttpResponse delete(CLogger logger, CHttpRequest request) {
try {
UriBuilder builder = buildUri(logger, request);
HttpDelete httpHttpDelete = new HttpDelete(builder.build().normalize());
return processRequest(logger, httpHttpDelete, request);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static CHttpResponse get(CLogger logger, CHttpRequest request) {
try {
UriBuilder builder = buildUri(logger, request);
HttpGet httpGet = new HttpGet(builder.build().normalize());
return processRequest(logger, httpGet, request);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static CHttpResponse post(CLogger logger, CHttpRequest request) {
try {
UriBuilder builder = buildUri(logger, request);
HttpPost httpPost = new HttpPost(builder.build().normalize());
if (request.getEntity() != null) {
httpPost.setEntity(request.getEntity());
}
return processRequest(logger, httpPost, request);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static CHttpResponse put(CLogger logger, CHttpRequest request) {
try {
UriBuilder builder = buildUri(logger, request);
HttpPut httpPut = new HttpPut(builder.build().normalize());
if (request.getEntity() != null) {
httpPut.setEntity(request.getEntity());
}
return processRequest(logger, httpPut, request);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private static UriBuilder buildUri(CLogger logger, CHttpRequest request) {
logger.trace("Processing Request: \n" + request);
UriBuilder builder = UriBuilder.fromUri(request.getTargetURL());
if (request.getQueryParameters() != null) {
request.getQueryParameters().forEach(kv -> builder.queryParam(kv.getName(), kv.getValue()));
}
return builder;
}
private static CHttpResponse processRequest(CLogger logger, HttpUriRequest request, CHttpRequest cHttpRequest) {
HttpClientBuilder clientBuilder = HttpClients.custom();
if (cHttpRequest.getSession() != null && cHttpRequest.getSession().getCookieStore() != null) {
clientBuilder.setDefaultCookieStore(cHttpRequest.getSession().getCookieStore());
}
if (cHttpRequest instanceof CHttpsRequest) {
if (((CHttpsRequest) cHttpRequest).getSSLConnectionSocketFactory() != null) {
clientBuilder.setSSLSocketFactory(((CHttpsRequest) cHttpRequest).getSSLConnectionSocketFactory());
}
if (((CHttpsRequest) cHttpRequest).getSSLContext() != null) {
clientBuilder.setSSLContext(((CHttpsRequest) cHttpRequest).getSSLContext());
}
}
if (cHttpRequest.getSession() != null && cHttpRequest.getSession().getHeaders() != null) {
cHttpRequest.getSession().getHeaders().forEach((k, v) -> request.addHeader(k, v));
}
CloseableHttpClient build = clientBuilder.build();
logger.trace("Request ::> " + cHttpRequest);
CHttpResponse response = CRetry.retryOnError(integer -> {
try {
return new CHttpResponse(build.execute(request));
} catch (Exception e) {
throw new RuntimeException(e);
}
}, 10, 5000, null);
if (cHttpRequest.getSession() != null) {
cHttpRequest.getSession().updateSessionWithResponse(response);
}
logger.trace("Response ::> " + response);
return response;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy