aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/network
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2012-05-11 09:41:17 +0200
committerSamuel Tardieu <sam@rfc1149.net>2012-05-11 10:21:43 +0200
commitcd8a2b268dd451182ba7e9d068117cf938cefc38 (patch)
tree4262a4f621a43a4c4a5e7aedced45108a6917f71 /main/src/cgeo/geocaching/network
parentbdf40be387b9d6598c05c8f49eef56d9684ccf99 (diff)
downloadcgeo-cd8a2b268dd451182ba7e9d068117cf938cefc38.zip
cgeo-cd8a2b268dd451182ba7e9d068117cf938cefc38.tar.gz
cgeo-cd8a2b268dd451182ba7e9d068117cf938cefc38.tar.bz2
Refactoring: separate steps of network requests
This is needed to implement #583.
Diffstat (limited to 'main/src/cgeo/geocaching/network')
-rw-r--r--main/src/cgeo/geocaching/network/Network.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java
index 39c0cf5..55f6377 100644
--- a/main/src/cgeo/geocaching/network/Network.java
+++ b/main/src/cgeo/geocaching/network/Network.java
@@ -161,15 +161,39 @@ public abstract class Network {
}
}
+ addHeaders(request, headers, cacheFile);
+
+ return doRepeatedRequests(request);
+ }
+
+ /**
+ * Add headers to HTTP request.
+ * @param request
+ * the request to add headers to
+ * @param headers
+ * the headers to add (in addition to the standard headers), can be null
+ * @param cacheFile
+ * if non-null, the file to take ETag and If-Modified-Since information from
+ */
+ private static void addHeaders(final HttpRequestBase request, final Parameters headers, final File cacheFile) {
for (final NameValuePair header : Parameters.extend(Parameters.merge(headers, cacheHeaders(cacheFile)),
"Accept-Charset", "utf-8,iso-8859-1;q=0.8,utf-16;q=0.8,*;q=0.7",
"Accept-Language", "en-US,*;q=0.9",
"X-Requested-With", "XMLHttpRequest")) {
request.setHeader(header.getName(), header.getValue());
}
-
request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.USER_AGENT);
+ }
+ /**
+ * Retry a request for a few times.
+ *
+ * @param request
+ * the request to try
+ * @return
+ * the response, or null if there has been a failure
+ */
+ private static HttpResponse doRepeatedRequests(final HttpRequestBase request) {
final String reqLogStr = request.getMethod() + " " + Network.hidePassword(request.getURI().toString());
Log.d(reqLogStr);