aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/network
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-05-23 20:40:04 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-05-23 20:40:04 +0200
commita1854a6148f577621ccac4894998f6e4ceb71285 (patch)
tree351bec8440859cfc7024b28467204b9c98d41670 /main/src/cgeo/geocaching/network
parent4453f08ccda762f1c608feaf6cf379d1ffa93df4 (diff)
parent3dd05ce666b92ef592bc860d82d9afe624201d51 (diff)
downloadcgeo-a1854a6148f577621ccac4894998f6e4ceb71285.zip
cgeo-a1854a6148f577621ccac4894998f6e4ceb71285.tar.gz
cgeo-a1854a6148f577621ccac4894998f6e4ceb71285.tar.bz2
Fix #1572: use httpclientandroidlib instead of the standard one
Diffstat (limited to 'main/src/cgeo/geocaching/network')
-rw-r--r--main/src/cgeo/geocaching/network/Cookies.java8
-rw-r--r--main/src/cgeo/geocaching/network/HtmlImage.java2
-rw-r--r--main/src/cgeo/geocaching/network/Network.java94
-rw-r--r--main/src/cgeo/geocaching/network/OAuth.java2
-rw-r--r--main/src/cgeo/geocaching/network/Parameters.java8
5 files changed, 58 insertions, 56 deletions
diff --git a/main/src/cgeo/geocaching/network/Cookies.java b/main/src/cgeo/geocaching/network/Cookies.java
index 68310e6..bcfc893 100644
--- a/main/src/cgeo/geocaching/network/Cookies.java
+++ b/main/src/cgeo/geocaching/network/Cookies.java
@@ -1,10 +1,10 @@
package cgeo.geocaching.network;
+import ch.boye.httpclientandroidlib.client.CookieStore;
+import ch.boye.httpclientandroidlib.cookie.Cookie;
+import ch.boye.httpclientandroidlib.impl.client.BasicCookieStore;
+import ch.boye.httpclientandroidlib.impl.cookie.BasicClientCookie;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.client.CookieStore;
-import org.apache.http.cookie.Cookie;
-import org.apache.http.impl.client.BasicCookieStore;
-import org.apache.http.impl.cookie.BasicClientCookie;
public abstract class Cookies {
diff --git a/main/src/cgeo/geocaching/network/HtmlImage.java b/main/src/cgeo/geocaching/network/HtmlImage.java
index ef13a36..3648d80 100644
--- a/main/src/cgeo/geocaching/network/HtmlImage.java
+++ b/main/src/cgeo/geocaching/network/HtmlImage.java
@@ -8,8 +8,8 @@ import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.utils.ImageHelper;
import cgeo.geocaching.utils.Log;
+import ch.boye.httpclientandroidlib.HttpResponse;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpResponse;
import android.content.Context;
import android.content.res.Resources;
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 2c84c9c..ba02370 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -4,33 +4,36 @@ import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.utils.BaseUtils;
import cgeo.geocaching.utils.Log;
+import ch.boye.httpclientandroidlib.Header;
+import ch.boye.httpclientandroidlib.HeaderElement;
+import ch.boye.httpclientandroidlib.HttpEntity;
+import ch.boye.httpclientandroidlib.HttpException;
+import ch.boye.httpclientandroidlib.HttpRequest;
+import ch.boye.httpclientandroidlib.HttpRequestInterceptor;
+import ch.boye.httpclientandroidlib.HttpResponse;
+import ch.boye.httpclientandroidlib.HttpResponseInterceptor;
+import ch.boye.httpclientandroidlib.NameValuePair;
+import ch.boye.httpclientandroidlib.ProtocolException;
+import ch.boye.httpclientandroidlib.client.HttpClient;
+import ch.boye.httpclientandroidlib.client.entity.GzipDecompressingEntity;
+import ch.boye.httpclientandroidlib.client.entity.UrlEncodedFormEntity;
+import ch.boye.httpclientandroidlib.client.methods.HttpGet;
+import ch.boye.httpclientandroidlib.client.methods.HttpPost;
+import ch.boye.httpclientandroidlib.client.methods.HttpRequestBase;
+import ch.boye.httpclientandroidlib.client.params.ClientPNames;
+import ch.boye.httpclientandroidlib.entity.mime.MultipartEntity;
+import ch.boye.httpclientandroidlib.entity.mime.content.FileBody;
+import ch.boye.httpclientandroidlib.entity.mime.content.StringBody;
+import ch.boye.httpclientandroidlib.impl.client.DefaultHttpClient;
+import ch.boye.httpclientandroidlib.impl.client.DefaultRedirectStrategy;
+import ch.boye.httpclientandroidlib.params.BasicHttpParams;
+import ch.boye.httpclientandroidlib.params.CoreConnectionPNames;
+import ch.boye.httpclientandroidlib.params.CoreProtocolPNames;
+import ch.boye.httpclientandroidlib.params.HttpParams;
+import ch.boye.httpclientandroidlib.protocol.HTTP;
+import ch.boye.httpclientandroidlib.protocol.HttpContext;
+import ch.boye.httpclientandroidlib.util.EntityUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.Header;
-import org.apache.http.HeaderElement;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpRequestInterceptor;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpResponseInterceptor;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.entity.HttpEntityWrapper;
-import org.apache.http.entity.mime.MultipartEntity;
-import org.apache.http.entity.mime.content.FileBody;
-import org.apache.http.entity.mime.content.StringBody;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.BasicHttpParams;
-import org.apache.http.params.CoreConnectionPNames;
-import org.apache.http.params.CoreProtocolPNames;
-import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.protocol.HttpContext;
-import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
@@ -38,31 +41,11 @@ import android.net.Uri;
import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
-import java.util.zip.GZIPInputStream;
public abstract class Network {
- static class GzipDecompressingEntity extends HttpEntityWrapper {
- public GzipDecompressingEntity(final HttpEntity entity) {
- super(entity);
- }
-
- @Override
- public InputStream getContent() throws IOException, IllegalStateException {
- // the wrapped entity's getContent() decides about repeatability
- return new GZIPInputStream(wrappedEntity.getContent());
- }
-
- @Override
- public long getContentLength() {
- // length of gunzipped content is not known
- return -1;
- }
- }
-
private static final int NB_DOWNLOAD_RETRIES = 4;
/** User agent id */
private final static String USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
@@ -74,6 +57,7 @@ public abstract class Network {
Network.clientParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, HTTP.UTF_8);
Network.clientParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
Network.clientParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, 30000);
+ Network.clientParams.setParameter(ClientPNames.HANDLE_REDIRECTS, true);
}
private static String hidePassword(final String message) {
@@ -85,6 +69,24 @@ public abstract class Network {
client.setCookieStore(Cookies.cookieStore);
client.setParams(clientParams);
+ client.setRedirectStrategy(new DefaultRedirectStrategy() {
+ public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) {
+ boolean isRedirect = false;
+ try {
+ isRedirect = super.isRedirected(request, response, context);
+ } catch (final ProtocolException e) {
+ Log.e("httpclient.isRedirected: unable to check for redirection", e);
+ }
+ if (!isRedirect) {
+ final int responseCode = response.getStatusLine().getStatusCode();
+ if (responseCode == 301 || responseCode == 302) {
+ return true;
+ }
+ }
+ return isRedirect;
+ }
+ });
+
client.addRequestInterceptor(new HttpRequestInterceptor() {
@Override
diff --git a/main/src/cgeo/geocaching/network/OAuth.java b/main/src/cgeo/geocaching/network/OAuth.java
index 8cecb22..0b7a261 100644
--- a/main/src/cgeo/geocaching/network/OAuth.java
+++ b/main/src/cgeo/geocaching/network/OAuth.java
@@ -3,8 +3,8 @@ package cgeo.geocaching.network;
import cgeo.geocaching.Settings;
import cgeo.geocaching.utils.CryptUtils;
+import ch.boye.httpclientandroidlib.NameValuePair;
import org.apache.commons.lang3.StringUtils;
-import org.apache.http.NameValuePair;
import java.util.ArrayList;
import java.util.Date;
diff --git a/main/src/cgeo/geocaching/network/Parameters.java b/main/src/cgeo/geocaching/network/Parameters.java
index 90965e4..e05ab95 100644
--- a/main/src/cgeo/geocaching/network/Parameters.java
+++ b/main/src/cgeo/geocaching/network/Parameters.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.network;
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
-import org.apache.http.message.BasicNameValuePair;
-import org.apache.http.protocol.HTTP;
+import ch.boye.httpclientandroidlib.NameValuePair;
+import ch.boye.httpclientandroidlib.client.utils.URLEncodedUtils;
+import ch.boye.httpclientandroidlib.message.BasicNameValuePair;
+import ch.boye.httpclientandroidlib.protocol.HTTP;
import java.security.InvalidParameterException;
import java.util.ArrayList;