diff options
author | Narayan Kamath <narayan@google.com> | 2013-06-13 12:06:06 +0100 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2013-06-13 12:16:59 +0100 |
commit | bf0942e19906b85a3a061d1e762a4474bef6f1e2 (patch) | |
tree | ee228c1952208cf830d879d36b68f13274461ac4 /android | |
parent | 46fb83f3095bfdeff14feb0d4c3d40984caa13e7 (diff) | |
download | okhttp-bf0942e19906b85a3a061d1e762a4474bef6f1e2.tar.gz |
Don't follow protocol redirects.
OkHttp allows protocol redirects by default, so turn them
off explicitly.
Also, let HttpsHandler extend HttpHandler so that they can
share code that deals with OkHttpClient initialization.
Change-Id: I890456260571abd40a64ab1647eb4e991f5b1c7e
Diffstat (limited to 'android')
-rw-r--r-- | android/main/java/com/squareup/okhttp/HttpHandler.java | 16 | ||||
-rw-r--r-- | android/main/java/com/squareup/okhttp/HttpsHandler.java | 19 |
2 files changed, 21 insertions, 14 deletions
diff --git a/android/main/java/com/squareup/okhttp/HttpHandler.java b/android/main/java/com/squareup/okhttp/HttpHandler.java index c960160..c656c04 100644 --- a/android/main/java/com/squareup/okhttp/HttpHandler.java +++ b/android/main/java/com/squareup/okhttp/HttpHandler.java @@ -23,19 +23,29 @@ import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; -public final class HttpHandler extends URLStreamHandler { +public class HttpHandler extends URLStreamHandler { @Override protected URLConnection openConnection(URL url) throws IOException { - return new OkHttpClient().open(url); + return newOkHttpClient(null /* proxy */).open(url); } @Override protected URLConnection openConnection(URL url, Proxy proxy) throws IOException { if (url == null || proxy == null) { throw new IllegalArgumentException("url == null || proxy == null"); } - return new OkHttpClient().setProxy(proxy).open(url); + return newOkHttpClient(proxy).open(url); } @Override protected int getDefaultPort() { return 80; } + + protected OkHttpClient newOkHttpClient(Proxy proxy) { + OkHttpClient client = new OkHttpClient(); + client.setFollowProtocolRedirects(false); + if (proxy != null) { + client.setProxy(proxy); + } + + return client; + } } diff --git a/android/main/java/com/squareup/okhttp/HttpsHandler.java b/android/main/java/com/squareup/okhttp/HttpsHandler.java index 515725a..3570846 100644 --- a/android/main/java/com/squareup/okhttp/HttpsHandler.java +++ b/android/main/java/com/squareup/okhttp/HttpsHandler.java @@ -25,21 +25,18 @@ import java.net.URLStreamHandler; import java.util.Arrays; import java.util.List; -public final class HttpsHandler extends URLStreamHandler { +public final class HttpsHandler extends HttpHandler { private static final List<String> ENABLED_TRANSPORTS = Arrays.asList("http/1.1"); - @Override protected URLConnection openConnection(URL url) throws IOException { - return new OkHttpClient().open(url); + @Override protected int getDefaultPort() { + return 443; } - @Override protected URLConnection openConnection(URL url, Proxy proxy) throws IOException { - if (url == null || proxy == null) { - throw new IllegalArgumentException("url == null || proxy == null"); - } - return new OkHttpClient().setProxy(proxy).setTransports(ENABLED_TRANSPORTS).open(url); - } + @Override + protected OkHttpClient newOkHttpClient(Proxy proxy) { + OkHttpClient client = super.newOkHttpClient(proxy); + client.setTransports(ENABLED_TRANSPORTS); - @Override protected int getDefaultPort() { - return 443; + return client; } } |