diff options
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java')
-rw-r--r-- | id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java | 73 |
1 files changed, 56 insertions, 17 deletions
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java index 733c03bf0..7121c4a2a 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/utils/HttpClientWithProxySupport.java @@ -22,9 +22,20 @@ */ package at.gv.egovernment.moa.id.commons.utils; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.UsernamePasswordCredentials; -import org.apache.commons.httpclient.auth.AuthScope; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLSocketFactory; + +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.conn.ssl.DefaultHostnameVerifier; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +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 at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.MiscUtil; @@ -35,27 +46,55 @@ import at.gv.egovernment.moa.util.MiscUtil; */ public class HttpClientWithProxySupport { - public static HttpClient getHttpClient() { - HttpClient client = new HttpClient(); - + public static CloseableHttpClient getHttpClient(SSLSocketFactory sSLSocketFactory, boolean validateHostname) { + + HttpClientBuilder clientBuilder = HttpClients.custom(); + + //set proxy functionality String host = System.getProperty("http.proxyHost"); //$NON-NLS-1$ - String port = System.getProperty("http.proxyPort"); //$NON-NLS-1$ - if (MiscUtil.isNotEmpty(host) && - MiscUtil.isNotEmpty(port)) { - int p = Integer.parseInt(port); - client.getHostConfiguration().setProxy(host, p); + String port = System.getProperty("http.proxyPort"); //$NON-NLS-1$ + int p = -1; + + if (MiscUtil.isNotEmpty(host) && MiscUtil.isNotEmpty(port)) { + p = Integer.parseInt(port); + HttpHost proxy = null; + if (host.startsWith("https")) + proxy = new HttpHost(host, p, "https"); + else + proxy = new HttpHost(host, p, "http"); + + clientBuilder.setProxy(proxy); + Logger.info("Initial HTTPClient with proxy usage. " + "ProxyHost=" + host + " ProxyPort=" + port); - + String user = System.getProperty("http.proxyUser"); //$NON-NLS-1$ String pass = System.getProperty("http.proxyPassword"); //$NON-NLS-1$ - if (MiscUtil.isNotEmpty(user) && pass != null) { - client.getState().setProxyCredentials(new AuthScope(host, p), - new UsernamePasswordCredentials(user, pass)); + if (MiscUtil.isNotEmpty(user) && pass != null) { + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(new AuthScope(host, p), new UsernamePasswordCredentials(user, pass)); } - } - return client; + } + + //set SSL context + if (sSLSocketFactory != null) { + HostnameVerifier hostnameVerifier = null; + + //set hostName validation filter + if (validateHostname) + hostnameVerifier = new DefaultHostnameVerifier(); + else + hostnameVerifier = new NoopHostnameVerifier(); + + clientBuilder.setSSLSocketFactory( + new SSLConnectionSocketFactory(sSLSocketFactory, hostnameVerifier)); + + } + + + + return clientBuilder.build(); } } |