From 19f3dfc4bbe73c1e6ad3ebd1ef858effa52006c0 Mon Sep 17 00:00:00 2001 From: Ori Yosefi Date: Sun, 24 Jul 2016 08:22:57 -0700 Subject: [PATCH 1/2] use http.proxyHost and http.proxyPort if defined --- .../channel/common/ApacheSender43.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java b/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java index dedf1810e86..977055cc128 100644 --- a/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java +++ b/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java @@ -23,15 +23,19 @@ import java.io.IOException; +import com.google.common.base.Strings; import com.microsoft.applicationinsights.internal.logger.InternalLogger; +import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; 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.impl.conn.DefaultProxyRoutePlanner; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; /** @@ -40,15 +44,32 @@ final class ApacheSender43 implements ApacheSender { private final CloseableHttpClient httpClient; + private final static String HTTP_PROXY_HOST_PROPERTY_NAME = "http.proxyHost"; + private final static String HTTP_PROXY_PORT_PROPERTY_NAME = "http.proxyPort"; public ApacheSender43() { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS); cm.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE); - httpClient = HttpClients.custom() - .setConnectionManager(cm) - .build(); + HttpClientBuilder builder = HttpClients.custom() + .setConnectionManager(cm); + + // If proxy host and (optionally) port were set, create and set a default route planner to use it + String proxyHost = System.getProperty(HTTP_PROXY_HOST_PROPERTY_NAME); + if (!Strings.isNullOrEmpty(proxyHost)){ + HttpHost proxy; + String portString = System.getProperty(HTTP_PROXY_PORT_PROPERTY_NAME); + if (!Strings.isNullOrEmpty(portString)){ + int portNum = Integer.parseInt(portString); + proxy = new HttpHost(proxyHost, portNum); + } else{ + proxy = new HttpHost(proxyHost); + } + builder = builder.setRoutePlanner(new DefaultProxyRoutePlanner(proxy)); + } + + httpClient = builder.build(); } @Override From 2e2a4abf5cd53aeb34921e94ce096dff3e51e270 Mon Sep 17 00:00:00 2001 From: Ori Yosefi Date: Mon, 25 Jul 2016 23:45:02 -0700 Subject: [PATCH 2/2] simpler way with useSystemProperties(). Did not work in my testing because I used http.proxyHost instead of just proxyHost --- .../channel/common/ApacheSender43.java | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java b/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java index 977055cc128..7c2e88f6c92 100644 --- a/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java +++ b/core/src/main/java/com/microsoft/applicationinsights/internal/channel/common/ApacheSender43.java @@ -23,19 +23,15 @@ import java.io.IOException; -import com.google.common.base.Strings; import com.microsoft.applicationinsights.internal.logger.InternalLogger; -import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; 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.impl.conn.DefaultProxyRoutePlanner; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; /** @@ -44,33 +40,17 @@ final class ApacheSender43 implements ApacheSender { private final CloseableHttpClient httpClient; - private final static String HTTP_PROXY_HOST_PROPERTY_NAME = "http.proxyHost"; - private final static String HTTP_PROXY_PORT_PROPERTY_NAME = "http.proxyPort"; public ApacheSender43() { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS); cm.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE); - HttpClientBuilder builder = HttpClients.custom() - .setConnectionManager(cm); - - // If proxy host and (optionally) port were set, create and set a default route planner to use it - String proxyHost = System.getProperty(HTTP_PROXY_HOST_PROPERTY_NAME); - if (!Strings.isNullOrEmpty(proxyHost)){ - HttpHost proxy; - String portString = System.getProperty(HTTP_PROXY_PORT_PROPERTY_NAME); - if (!Strings.isNullOrEmpty(portString)){ - int portNum = Integer.parseInt(portString); - proxy = new HttpHost(proxyHost, portNum); - } else{ - proxy = new HttpHost(proxyHost); - } - builder = builder.setRoutePlanner(new DefaultProxyRoutePlanner(proxy)); - } - - httpClient = builder.build(); - } + httpClient = HttpClients.custom() + .setConnectionManager(cm) + .useSystemProperties() + .build(); + } @Override public HttpResponse sendPostRequest(HttpPost post) throws IOException {