From 86b2d5a2f3c8e0a03f8d59cb3dad1b5ee04679e8 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Sat, 24 Dec 2016 14:24:57 +0100 Subject: [PATCH] Support for network proxies. --- .../de/schildbach/pte/AbstractNetworkProvider.java | 5 +++++ enabler/src/de/schildbach/pte/util/HttpClient.java | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java index bf4eeeaa..403cecf7 100644 --- a/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNetworkProvider.java @@ -18,6 +18,7 @@ package de.schildbach.pte; import java.io.IOException; +import java.net.Proxy; import java.util.EnumSet; import java.util.Map; import java.util.Set; @@ -78,6 +79,10 @@ public abstract class AbstractNetworkProvider implements NetworkProvider { httpClient.setUserAgent(userAgent); } + public void setProxy(final Proxy proxy) { + httpClient.setProxy(proxy); + } + protected void setTimeZone(final String timeZoneId) { this.timeZone = TimeZone.getTimeZone(timeZoneId); } diff --git a/enabler/src/de/schildbach/pte/util/HttpClient.java b/enabler/src/de/schildbach/pte/util/HttpClient.java index bef61fe2..e2d7f544 100644 --- a/enabler/src/de/schildbach/pte/util/HttpClient.java +++ b/enabler/src/de/schildbach/pte/util/HttpClient.java @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.io.IOException; import java.net.HttpURLConnection; +import java.net.Proxy; import java.nio.charset.Charset; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; @@ -75,6 +76,8 @@ public final class HttpClient { private String sessionCookieName = null; @Nullable private Cookie sessionCookie = null; + @Nullable + private Proxy proxy = null; private boolean trustAllCertificates = false; @Nullable private CertificatePinner certificatePinner = null; @@ -118,6 +121,10 @@ public final class HttpClient { this.sessionCookieName = sessionCookieName; } + public void setProxy(final Proxy proxy) { + this.proxy = proxy; + } + public void setTrustAllCertificates(final boolean trustAllCertificates) { this.trustAllCertificates = trustAllCertificates; } @@ -193,8 +200,10 @@ public final class HttpClient { request.header("Cookie", sessionCookie.toString()); final OkHttpClient okHttpClient; - if (trustAllCertificates || certificatePinner != null || sslAcceptAllHostnames) { + if (proxy != null || trustAllCertificates || certificatePinner != null || sslAcceptAllHostnames) { final OkHttpClient.Builder builder = OKHTTP_CLIENT.newBuilder(); + if (proxy != null) + builder.proxy(proxy); if (trustAllCertificates) trustAllCertificates(builder); if (certificatePinner != null)