From 55f1d7f0ec1d754914201d93a31351726cf3385b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Ruschka?= Date: Wed, 28 Jan 2015 20:34:10 +0100 Subject: [PATCH] Added support to connect using proxy. --- .../com/ecwid/mailchimp/MailChimpClient.java | 11 +++++ .../HttpClientConnectionManager.java | 40 +++++++++++++++++-- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ecwid/mailchimp/MailChimpClient.java b/src/main/java/com/ecwid/mailchimp/MailChimpClient.java index b675d06..83021ef 100644 --- a/src/main/java/com/ecwid/mailchimp/MailChimpClient.java +++ b/src/main/java/com/ecwid/mailchimp/MailChimpClient.java @@ -46,6 +46,17 @@ public class MailChimpClient implements Closeable { public MailChimpClient() { this(new HttpClientConnectionManager()); } + + /** + * Constructs a {@code MailChimpClient} object accessing MailChimp API service point + * through the default connection manager (currently {@link HttpClientConnectionManager}) + * and proxy. + * @param proxyUrl the proxy url that should be used when trying to connect to server + * @param proxyPort the proxy port + */ + public MailChimpClient(String proxyUrl, int proxyPort) { + this(new HttpClientConnectionManager(proxyUrl, proxyPort)); + } /** * Constructs a {@code MailChimpClient} object accessing MailChimp API service point diff --git a/src/main/java/com/ecwid/mailchimp/connection/HttpClientConnectionManager.java b/src/main/java/com/ecwid/mailchimp/connection/HttpClientConnectionManager.java index e56f3e7..d77afb4 100644 --- a/src/main/java/com/ecwid/mailchimp/connection/HttpClientConnectionManager.java +++ b/src/main/java/com/ecwid/mailchimp/connection/HttpClientConnectionManager.java @@ -16,11 +16,12 @@ package com.ecwid.mailchimp.connection; import java.io.IOException; +import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.HttpConnectionParams; import org.apache.http.util.EntityUtils; @@ -52,8 +53,33 @@ public HttpClientConnectionManager() { * @param readTimeout the timeout (in milliseconds) when when waiting for the response from the remote server */ public HttpClientConnectionManager(int connectTimeout, int readTimeout) { + this(connectTimeout, readTimeout, null, 0); + } + + /** + * Constructor. + * + * @param proxyUrl the proxy url that should be used when trying to connect to server + * @param proxyPort the proxy port + */ + public HttpClientConnectionManager(String proxyUrl, int proxyPort) { + this(DEFAULT_TIMEOUT, DEFAULT_TIMEOUT, proxyUrl, proxyPort); + } + + /** + * Constructor. + * + * @param connectTimeout the timeout (in milliseconds) when trying to connect to the remote server + * @param readTimeout the timeout (in milliseconds) when when waiting for the response from the remote server + * @param proxyUrl the proxy url that should be used when trying to connect to server + * @param proxyPort the proxy port + */ + public HttpClientConnectionManager(int connectTimeout, int readTimeout, String proxyUrl, int proxyPort) { setConnectTimeout(connectTimeout); setReadTimeout(readTimeout); + if (proxyUrl != null && proxyPort != 0) { + setProxy(new HttpHost(proxyUrl, proxyPort)); + } } @Override @@ -77,7 +103,7 @@ public int getConnectTimeout() { return HttpConnectionParams.getConnectionTimeout(http.getParams()); } - public void setConnectTimeout(int connectTimeout) { + public final void setConnectTimeout(int connectTimeout) { HttpConnectionParams.setConnectionTimeout(http.getParams(), connectTimeout); } @@ -85,7 +111,15 @@ public int getReadTimeout() { return HttpConnectionParams.getSoTimeout(http.getParams()); } - public void setReadTimeout(int readTimeout) { + public final void setReadTimeout(int readTimeout) { HttpConnectionParams.setSoTimeout(http.getParams(), readTimeout); } + + public HttpHost getProxy() { + return (HttpHost) http.getParams().getParameter(ConnRoutePNames.DEFAULT_PROXY); + } + + public final void setProxy(HttpHost proxy) { + http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); + } }