package pl.edu.agh.dsm.common.utils; import java.io.IOException; import java.net.URI; import org.apache.http.HttpEntity; import org.apache.http.StatusLine; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HttpClientUtil { static final Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); public static class HttpResponseResult { public String resultContent; public StatusLine statusLine; public HttpResponseResult() { } public HttpResponseResult(StatusLine statusLine) { super(); this.statusLine = statusLine; } } public static HttpResponseResult makePostRequest(String uri, HttpEntity data, Credentials userCredential) throws IOException { HttpPost httppost = new HttpPost(uri); httppost.setEntity(data); return makeRequest(httppost, userCredential); } public static HttpResponseResult makeGetRequest(String uri, Credentials userCredential) throws IOException { HttpGet httpget = new HttpGet(uri); return makeRequest(httpget, userCredential); } public static HttpResponseResult makeDeleteRequest(String uri, Credentials userCredential) throws IOException { HttpDelete httpdelete = new HttpDelete(uri); return makeRequest(httpdelete, userCredential); } private static CredentialsProvider prepareCredenitalsProvider(URI uri, Credentials credentials) throws IOException { if (credentials == null) { return null; } CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(uri.getHost(), uri.getPort()), credentials); return credsProvider; } private static HttpResponseResult makeRequest(HttpUriRequest request, Credentials credentials) throws IOException { HttpClientBuilder clientBuilder = HttpClients.custom(); if (credentials != null) { CredentialsProvider credsProvider = prepareCredenitalsProvider( request.getURI(), credentials); clientBuilder.setDefaultCredentialsProvider(credsProvider); } CloseableHttpClient httpclient = clientBuilder.build(); HttpResponseResult result = null; try { logger.debug("Executing request {}", request.getRequestLine()); CloseableHttpResponse response = httpclient.execute(request); try { StatusLine statusLine = response.getStatusLine(); result = new HttpResponseResult(statusLine); HttpEntity entity = response.getEntity(); result.resultContent = EntityUtils.toString(entity); EntityUtils.consume(entity); } finally { response.close(); } } finally { httpclient.close(); } return result; } }