diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2012-05-23 20:40:04 +0200 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2012-05-23 20:40:04 +0200 |
| commit | a1854a6148f577621ccac4894998f6e4ceb71285 (patch) | |
| tree | 351bec8440859cfc7024b28467204b9c98d41670 /main/src/cgeo/geocaching/network | |
| parent | 4453f08ccda762f1c608feaf6cf379d1ffa93df4 (diff) | |
| parent | 3dd05ce666b92ef592bc860d82d9afe624201d51 (diff) | |
| download | cgeo-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.java | 8 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/HtmlImage.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/Network.java | 94 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/OAuth.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/Parameters.java | 8 |
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; |
