diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-22 09:37:57 +0200 |
---|---|---|
committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-22 10:38:48 +0200 |
commit | 4ef252623bb43183290cb952c9e058a3dd59c59d (patch) | |
tree | 8f8a04c55821338ffa4250c9590465652fd8686a | |
parent | 46c20fdd788157dedf1d9b9b1a30efd3fa45eceb (diff) | |
download | cgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.zip cgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.tar.gz cgeo-4ef252623bb43183290cb952c9e058a3dd59c59d.tar.bz2 |
Use URI instead of secure/host/path when calling request()
Add new URI version of the request() family.
-rw-r--r-- | main/src/cgeo/geocaching/LogTemplateProvider.java | 4 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgBase.java | 160 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgGeo.java | 7 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeocaches.java | 8 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeoinit.java | 4 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeotouch.java | 4 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/cgeovisit.java | 7 | ||||
-rw-r--r-- | main/src/cgeo/geocaching/connector/GCConnector.java | 6 |
8 files changed, 96 insertions, 104 deletions
diff --git a/main/src/cgeo/geocaching/LogTemplateProvider.java b/main/src/cgeo/geocaching/LogTemplateProvider.java index 4119b37..d8302c9 100644 --- a/main/src/cgeo/geocaching/LogTemplateProvider.java +++ b/main/src/cgeo/geocaching/LogTemplateProvider.java @@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils; import android.util.Log; +import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; @@ -88,7 +89,8 @@ public class LogTemplateProvider { } String findCount = ""; final Map<String, String> params = new HashMap<String, String>(); - final String page = base.request(false, "www.geocaching.com", "/email/", "GET", params, false, false, false).getData(); + final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/email/"); + final String page = base.request(uri, "GET", params, false, false, false).getData(); int current = parseFindCount(page); if (current >= 0) { diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java index 10175d1..b924dae 100644 --- a/main/src/cgeo/geocaching/cgBase.java +++ b/main/src/cgeo/geocaching/cgBase.java @@ -470,8 +470,7 @@ public class cgBase { } public int login() { - final String host = "www.geocaching.com"; - final String path = "/login/default.aspx"; + final URI uri = buildURI(true, "www.geocaching.com", "/login/default.aspx"); cgResponse loginResponse = null; String loginData = null; @@ -483,7 +482,7 @@ public class cgBase { return -3; // no login information stored } - loginResponse = request(true, host, path, "GET", new HashMap<String, String>(), false, false, false); + loginResponse = request(uri, "GET", new HashMap<String, String>(), false, false, false); loginData = loginResponse.getData(); if (StringUtils.isNotBlank(loginData)) { if (checkLogin(loginData)) { @@ -523,7 +522,7 @@ public class cgBase { params.put("ctl00$SiteContent$cbRememberMe", "on"); params.put("ctl00$SiteContent$btnSignIn", "Login"); - loginResponse = request(true, host, path, "POST", params, false, false, false); + loginResponse = request(uri, "POST", params, false, false, false); loginData = loginResponse.getData(); if (StringUtils.isNotBlank(loginData)) { @@ -582,15 +581,14 @@ public class cgBase { } public String switchToEnglish(String[] viewstates) { - final String host = "www.geocaching.com"; - final String path = "/default.aspx"; + final URI uri = buildURI(false, "www.geocaching.com", "/default.aspx"); final Map<String, String> params = new HashMap<String, String>(); setViewstates(viewstates, params); params.put("__EVENTTARGET", "ctl00$uxLocaleList$uxLocaleList$ctl00$uxLocaleItem"); // switch to english params.put("__EVENTARGUMENT", ""); - return request(false, host, path, "POST", params, false, false, false).getData(); + return request(uri, "POST", params, false, false, false).getData(); } public cgCacheWrap parseSearch(cgSearchThread thread, String url, String page, boolean showCaptcha) { @@ -633,7 +631,8 @@ public class cgBase { } if (recaptchaJsParam != null) { - final String recaptchaJs = request(false, "www.google.com", "/recaptcha/api/challenge", "GET", "k=" + urlencode_rfc3986(recaptchaJsParam.trim()), 0, true).getData(); + final URI uri = buildURI(false, "www.google.com", "/recaptcha/api/challenge"); + final String recaptchaJs = request(uri, "GET", "k=" + urlencode_rfc3986(recaptchaJsParam.trim()), 0, true).getData(); if (StringUtils.isNotBlank(recaptchaJs)) { final Matcher matcherRecaptchaChallenge = patternRecaptchaChallenge.matcher(recaptchaJs); @@ -884,8 +883,6 @@ public class cgBase { try { // get coordinates for parsed caches - final String host = "www.geocaching.com"; - final String path = "/seek/nearest.aspx"; final StringBuilder params = new StringBuilder(); params.append("__EVENTTARGET=&__EVENTARGUMENT="); if (ArrayUtils.isNotEmpty(caches.viewstates)) { @@ -912,7 +909,8 @@ public class cgBase { } params.append("&ctl00%24ContentBody%24uxDownloadLoc=Download+Waypoints"); - final String coordinates = request(false, host, path, "POST", params.toString(), 0, true).getData(); + final URI uri = buildURI(false, "www.geocaching.com", "/seek/nearest.aspx"); + final String coordinates = request(uri, "POST", params.toString(), 0, true).getData(); if (StringUtils.isNotBlank(coordinates)) { if (coordinates.contains("You have not agreed to the license agreement. The license agreement is required before you can start downloading GPX or LOC files from Geocaching.com")) { @@ -967,14 +965,14 @@ public class cgBase { return caches; } - public static cgCacheWrap parseMapJSON(String url, String data) { + public static cgCacheWrap parseMapJSON(final URI uri, final String data) { if (StringUtils.isEmpty(data)) { Log.e(cgSettings.tag, "cgeoBase.parseMapJSON: No page given"); return null; } final cgCacheWrap caches = new cgCacheWrap(); - caches.url = url; + caches.url = uri.toString(); try { final JSONObject yoDawg = new JSONObject(data); @@ -1667,8 +1665,8 @@ public class cgBase { params.put("sp", "0"); params.put("sf", "0"); params.put("decrypt", "1"); - final cgResponse response = request(false, "www.geocaching.com", "/seek/geocache.logbook", "GET", - params, false, false, false); + final URI uri = buildURI(false, "www.geocaching.com", "/seek/geocache.logbook"); + final cgResponse response = request(uri, "GET", params, false, false, false); if (response.getStatusCode() != 200) { Log.e(cgSettings.tag, "cgBase.loadLogsFromDetails: error " + response.getStatusCode() + " when requesting log information"); return; @@ -1816,10 +1814,8 @@ public class cgBase { public void detectGcCustomDate() { - final String host = "www.geocaching.com"; - final String path = "/account/ManagePreferences.aspx"; - - final String result = request(false, host, path, "GET", null, false, false, false).getData(); + final URI uri = buildURI(false, "www.geocaching.com", "/account/ManagePreferences.aspx"); + final String result = request(uri, "GET", null, false, false, false).getData(); if (null == result) { Log.w(cgSettings.tag, "cgeoBase.detectGcCustomDate: result is null"); @@ -1881,7 +1877,8 @@ public class cgBase { params.put("waypoints", implode(",", geocodes.toArray())); } params.put("version", "cgeo"); - final String votes = request(false, "gcvote.com", "/getVotes.php", "GET", params, false, false, false).getData(); + final URI uri = buildURI(false, "gcvote.com", "/getVotes.php"); + final String votes = request(uri, "GET", params, false, false, false).getData(); if (votes == null) { return null; } @@ -2524,11 +2521,12 @@ public class cgBase { params.put("__EVENTTARGET", "ctl00$ContentBody$pgrBottom$ctl08"); params.put("__EVENTARGUMENT", ""); - String page = request(false, host, path, method, params, false, false, true).getData(); + final URI uri = buildURI(false, host, path); + String page = request(uri, method, params, false, false, true).getData(); if (checkLogin(page) == false) { int loginState = login(); if (loginState == 1) { - page = request(false, host, path, method, params, false, false, true).getData(); + page = request(uri, method, params, false, false, true).getData(); } else if (loginState == -3) { Log.i(cgSettings.tag, "Working as guest."); } else { @@ -2673,7 +2671,8 @@ public class cgBase { params.put("lng", longitude); final String url = "http://" + host + path + "?" + prepareParameters(params, false, true); - String page = requestLogged(false, host, path, method, params, false, false, true); + final URI uri = buildURI(false, host, path); + String page = requestLogged(uri, method, params, false, false, true); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchByCoords: No data from server"); @@ -2723,7 +2722,8 @@ public class cgBase { params.put("key", keyword); final String url = "http://" + host + path + "?" + prepareParameters(params, false, true); - String page = requestLogged(false, host, path, method, params, false, false, true); + final URI uri = cgBase.buildURI(false, host, path); + String page = requestLogged(uri, method, params, false, false, true); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchByKeyword: No data from server"); @@ -2779,7 +2779,8 @@ public class cgBase { } final String url = "http://" + host + path + "?" + prepareParameters(params, my, true); - String page = requestLogged(false, host, path, method, params, false, my, true); + final URI uri = buildURI(false, host, path); + String page = requestLogged(uri, method, params, false, my, true); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchByUsername: No data from server"); @@ -2829,7 +2830,8 @@ public class cgBase { params.put("u", userName); final String url = "http://" + host + path + "?" + prepareParameters(params, false, true); - String page = requestLogged(false, host, path, method, params, false, false, true); + final URI uri = buildURI(false, host, path); + String page = requestLogged(uri, method, params, false, false, true); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchByOwner: No data from server"); @@ -2879,19 +2881,15 @@ public class cgBase { String params = "{\"dto\":{\"data\":{\"c\":1,\"m\":\"\",\"d\":\"" + latMax + "|" + latMin + "|" + lonMax + "|" + lonMin + "\"},\"ut\":\"" + usertoken + "\"}}"; - final String url = "http://" + host + path + "?" + params; - try { - page = requestJSONgc(new URI("http", host, path, null), params); - } catch (URISyntaxException e) { - Log.e(cgSettings.tag, "cgeoBase.searchByViewPort", e); - } + final URI uri = buildURI(false, host, path); + page = requestJSONgc(uri, params); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchByViewport: No data from server"); return null; } - final cgCacheWrap caches = parseMapJSON(url, page); + final cgCacheWrap caches = parseMapJSON(buildURI(false, host, path, params), page); if (caches == null || caches.cacheList == null || caches.cacheList.isEmpty()) { Log.e(cgSettings.tag, "cgeoBase.searchByViewport: No cache parsed"); } @@ -2918,9 +2916,6 @@ public class cgBase { return users; } - final String host = "api.go4cache.com"; - final String path = "/get.php"; - final String method = "POST"; final Map<String, String> params = new HashMap<String, String>(); params.put("u", username); @@ -2929,7 +2924,8 @@ public class cgBase { params.put("lnm", String.format((Locale) null, "%.6f", lonMin)); params.put("lnx", String.format((Locale) null, "%.6f", lonMax)); - final String data = request(false, host, path, method, params, false, false, false).getData(); + final URI uri = buildURI(false, "api.go4cache.com", "/get.php"); + final String data = request(uri, "POST", params, false, false, false).getData(); if (StringUtils.isBlank(data)) { Log.e(cgSettings.tag, "cgeoBase.getGeocachersInViewport: No data from server"); @@ -3009,9 +3005,6 @@ public class cgBase { return null; } - final String host = "www.geocaching.com"; - final String path = "/track/details.aspx"; - final String method = "GET"; final Map<String, String> params = new HashMap<String, String>(); if (StringUtils.isNotBlank(geocode)) { params.put("tracker", geocode); @@ -3021,7 +3014,8 @@ public class cgBase { params.put("id", id); } - String page = requestLogged(false, host, path, method, params, false, false, false); + final URI uri = buildURI(false, "www.geocaching.com", "/track/details.aspx"); + String page = requestLogged(uri, "GET", params, false, false, false); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgeoBase.searchTrackable: No data from server"); @@ -3079,9 +3073,6 @@ public class cgBase { Log.i(cgSettings.tag, "Trying to post log for cache #" + cacheid + " - action: " + logType + "; date: " + year + "." + month + "." + day + ", log: " + log + "; trackables: 0"); } - final String host = "www.geocaching.com"; - final String path = "/seek/log.aspx?ID=" + cacheid; - final String method = "POST"; final Map<String, String> params = new HashMap<String, String>(); setViewstates(viewstates, params); @@ -3112,11 +3103,12 @@ public class cgBase { params.put("ctl00$ContentBody$LogBookPanel1$uxTrackables$hdnCurrentFilter", ""); } - String page = request(false, host, path, method, params, false, false, false).getData(); + final URI uri = buildURI(false, "www.geocaching.com", "/seek/log.aspx?ID=" + cacheid); + String page = request(uri, "POST", params, false, false, false).getData(); if (checkLogin(page) == false) { int loginState = login(); if (loginState == 1) { - page = request(false, host, path, method, params, false, false, false).getData(); + page = request(uri, "POST", params, false, false, false).getData(); } else { Log.e(cgSettings.tag, "cgeoBase.postLog: Can not log in geocaching (error: " + loginState + ")"); return loginState; @@ -3173,7 +3165,7 @@ public class cgBase { params.put("ctl00$ContentBody$LogBookPanel1$uxTrackables$hdnCurrentFilter", ""); } - page = request(false, host, path, method, params, false, false, false).getData(); + page = request(uri, "POST", params, false, false, false).getData(); } } catch (Exception e) { Log.e(cgSettings.tag, "cgeoBase.postLog.confim: " + e.toString()); @@ -3221,9 +3213,6 @@ public class cgBase { log = log.replace("\n", "\r\n"); // windows' eol final Calendar currentDate = Calendar.getInstance(); - final String host = "www.geocaching.com"; - final String path = "/track/log.aspx?wid=" + tbid; - final String method = "POST"; final Map<String, String> params = new HashMap<String, String>(); setViewstates(viewstates, params); @@ -3244,11 +3233,12 @@ public class cgBase { params.put("ctl00$ContentBody$LogBookPanel1$LogButton", "Submit Log Entry"); params.put("ctl00$ContentBody$uxVistOtherListingGC", ""); - String page = request(false, host, path, method, params, false, false, false).getData(); + final URI uri = buildURI(false, "www.geocaching.com", "/track/log.aspx?wid=" + tbid); + String page = request(uri, "POST", params, false, false, false).getData(); if (checkLogin(page) == false) { int loginState = login(); if (loginState == 1) { - page = request(false, host, path, method, params, false, false, false).getData(); + page = request(uri, "POST", params, false, false, false).getData(); } else { Log.e(cgSettings.tag, "cgeoBase.postLogTrackable: Can not log in geocaching (error: " + loginState + ")"); return loginState; @@ -3283,7 +3273,8 @@ public class cgBase { * @return -1: error occured */ public int addToWatchlist(cgCache cache) { - String page = requestLogged(false, "www.geocaching.com", "/my/watchlist.aspx?w=" + cache.cacheId, + final URI uri = buildURI(false, "www.geocaching.com", "/my/watchlist.aspx", "w=" + cache.cacheId); + String page = requestLogged(uri, "POST", null, false, false, false); if (StringUtils.isBlank(page)) { @@ -3309,11 +3300,8 @@ public class cgBase { * @return -1: error occured */ public int removeFromWatchlist(cgCache cache) { - String host = "www.geocaching.com"; - String path = "/my/watchlist.aspx?ds=1&action=rem&id=" + cache.cacheId; - String method = "POST"; - - String page = requestLogged(false, host, path, method, null, false, false, false); + final URI uri = buildURI(false, "www.geocaching.com", "/my/watchlist.aspx?ds=1&action=rem&id=" + cache.cacheId); + String page = requestLogged(uri, "POST", null, false, false, false); if (StringUtils.isBlank(page)) { Log.e(cgSettings.tag, "cgBase.removeFromWatchlist: No data from server"); @@ -3327,7 +3315,7 @@ public class cgBase { params.put("__EVENTARGUMENT", ""); params.put("ctl00$ContentBody$btnYes", "Yes"); - page = request(false, host, path, method, params, false, false, false).getData(); + page = request(uri, "POST", params, false, false, false).getData(); boolean guidOnPage = cache.isGuidContainedInPage(page); if (!guidOnPage) { Log.i(cgSettings.tag, "cgBase.removeFromWatchlist: cache removed from watchlist"); @@ -3573,20 +3561,35 @@ public class cgBase { return paramsDone; } - public String[] requestViewstates(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my) { - final cgResponse response = request(secure, host, path, method, params, xContentType, my, false); + public static URI buildURI(final boolean secure, final String host, final String path, final String query) { + try { + return new URI(secure ? "https" : "http", host, path, query, null); + } catch (URISyntaxException e) { + // This should never happen as we only use trusted URI components. + Log.e(cgSettings.tag, "buildURI", e); + return null; + } + } + + public static URI buildURI(boolean secure, String host, String path) { + final String pathComponents[] = StringUtils.split(path, "?", 2); + return buildURI(secure, host, pathComponents[0], pathComponents.length > 1 ? pathComponents[1] : null); + } + + public String[] requestViewstates(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my) { + final cgResponse response = request(uri, method, params, xContentType, my, false); return getViewstates(response.getData()); } - public String requestLogged(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) { - cgResponse response = request(secure, host, path, method, params, xContentType, my, addF); + public String requestLogged(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) { + cgResponse response = request(uri, method, params, xContentType, my, addF); String data = response.getData(); if (checkLogin(data) == false) { int loginState = login(); if (loginState == 1) { - response = request(secure, host, path, method, params, xContentType, my, addF); + response = request(uri, method, params, xContentType, my, addF); data = response.getData(); } else { Log.i(cgSettings.tag, "Working as guest."); @@ -3596,20 +3599,10 @@ public class cgBase { return data; } - public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) { + public cgResponse request(final URI uri, String method, Map<String, String> params, boolean xContentType, boolean my, boolean addF) { // prepare parameters final String paramsDone = prepareParameters(params, my, addF); - - return request(secure, host, path, method, paramsDone, 0, xContentType); - } - - public cgResponse request(boolean secure, String host, String path, String method, Map<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) { - try { - return request(new URI(secure ? "https" : "http", host, path, null), method, params, requestId, xContentType, my, addF); - } catch (URISyntaxException e) { - Log.e(cgSettings.tag, "request", e); - return null; - } + return request(uri, method, paramsDone, 0, xContentType); } public cgResponse request(final URI uri, String method, Map<String, String> params, int requestId, boolean xContentType, boolean my, boolean addF) { @@ -3617,18 +3610,6 @@ public class cgBase { return request(uri, method, paramsDone, requestId, xContentType); } - public cgResponse request(boolean secure, String host, String path, String method, String params, int requestId, Boolean xContentType) { - try { - final String pathComponents[] = StringUtils.split(path, "?", 2); - final URI uri = new URI(secure ? "https" : "http", host, pathComponents[0], - pathComponents.length > 1 ? pathComponents[1] : null, null); - return request(uri, method, params, requestId, xContentType); - } catch (URISyntaxException e) { - Log.e(cgSettings.tag, "request", e); - return null; - } - } - public cgResponse request(final URI uri, String method, String params, int requestId, Boolean xContentType) { URL u = null; int httpCode = -1; @@ -4512,7 +4493,8 @@ public class cgBase { } public String getMapUserToken(Handler noTokenHandler) { - final cgResponse response = request(false, "www.geocaching.com", "/map/default.aspx", "GET", "", 0, false); + final URI uri = buildURI(false, "www.geocaching.com", "/map/default.aspx"); + final cgResponse response = request(uri, "GET", "", 0, false); final String data = response.getData(); String usertoken = null; diff --git a/main/src/cgeo/geocaching/cgGeo.java b/main/src/cgeo/geocaching/cgGeo.java index c4f51f3..7730c1b 100644 --- a/main/src/cgeo/geocaching/cgGeo.java +++ b/main/src/cgeo/geocaching/cgGeo.java @@ -15,6 +15,7 @@ import android.location.LocationManager; import android.os.Bundle; import android.util.Log; +import java.net.URI; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; @@ -381,9 +382,7 @@ public class cgGeo { if (settings.publicLoc == 1 && (lastGo4cacheCoords == null || coordsNow.distanceTo(lastGo4cacheCoords) > 0.75)) { g4cRunning = true; - final String host = "api.go4cache.com"; - final String path = "/"; - final String method = "POST"; + final URI uri = cgBase.buildURI(false, "api.go4cache.com", "/"); String action = null; if (app != null) { action = app.getAction(); @@ -404,7 +403,7 @@ public class cgGeo { if (base.version != null) { params.put("v", base.version); } - final String res = base.request(false, host, path, method, params, false, false, false).getData(); + final String res = base.request(uri, "POST", params, false, false, false).getData(); if (StringUtils.isNotBlank(res)) { lastGo4cacheCoords = coordsNow; diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 4d864ca..17bb58f 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -41,6 +41,7 @@ import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; @@ -48,12 +49,11 @@ import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.WindowManager; -import android.view.ContextMenu.ContextMenuInfo; +import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.EditText; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; -import android.widget.AdapterView.AdapterContextMenuInfo; import java.io.File; import java.io.FileOutputStream; @@ -61,6 +61,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; +import java.net.URI; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; @@ -2083,7 +2084,8 @@ public class cgeocaches extends AbstractListActivity { if (deviceCode == null) { deviceCode = ""; } - cgResponse responseFromWeb = base.request(false, "send2.cgeo.org", "/read.html", "GET", "code=" + cgBase.urlencode_rfc3986(deviceCode), 0, true); + final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/read.html"); + cgResponse responseFromWeb = base.request(uri, "GET", "code=" + cgBase.urlencode_rfc3986(deviceCode), 0, true); if (responseFromWeb.getStatusCode() == 200) { if (responseFromWeb.getData().length() > 2) { diff --git a/main/src/cgeo/geocaching/cgeoinit.java b/main/src/cgeo/geocaching/cgeoinit.java index 6a1c7ea..ebbe638 100644 --- a/main/src/cgeo/geocaching/cgeoinit.java +++ b/main/src/cgeo/geocaching/cgeoinit.java @@ -31,6 +31,7 @@ import android.widget.Spinner; import android.widget.TextView; import java.io.File; +import java.net.URI; public class cgeoinit extends AbstractActivity { @@ -1046,7 +1047,8 @@ public class cgeoinit extends AbstractActivity { String params = "name=" + cgBase.urlencode_rfc3986(nam) + "&code=" + cgBase.urlencode_rfc3986(cod); - cgResponse response = base.request(false, "send2.cgeo.org", "/auth.html", "GET", params, 0, true); + final URI uri = cgBase.buildURI(false, "send2.cgeo.org", "/auth.html"); + cgResponse response = base.request(uri, "GET", params, 0, true); if (response.getStatusCode() == 200) { diff --git a/main/src/cgeo/geocaching/cgeotouch.java b/main/src/cgeo/geocaching/cgeotouch.java index 5943ef2..6a24a1a 100644 --- a/main/src/cgeo/geocaching/cgeotouch.java +++ b/main/src/cgeo/geocaching/cgeotouch.java @@ -20,6 +20,7 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; +import java.net.URI; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; @@ -386,7 +387,8 @@ public class cgeotouch extends cgLogForm { return; } - final String page = base.request(false, "www.geocaching.com", "/track/log.aspx", "GET", params, false, false, false).getData(); + final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/track/log.aspx"); + final String page = base.request(uri, "GET", params, false, false, false).getData(); viewstates = cgBase.getViewstates(page); diff --git a/main/src/cgeo/geocaching/cgeovisit.java b/main/src/cgeo/geocaching/cgeovisit.java index 3cba036..86e6aca 100644 --- a/main/src/cgeo/geocaching/cgeovisit.java +++ b/main/src/cgeo/geocaching/cgeovisit.java @@ -25,6 +25,7 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; +import java.net.URI; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -381,7 +382,8 @@ public class cgeovisit extends cgLogForm { params.put("voteUser", String.format("%.1f", rating).replace(',', '.')); params.put("version", "cgeo"); - final String result = base.request(false, "gcvote.com", "/setVote.php", "GET", params, false, false, false).getData(); + final URI uri = cgBase.buildURI(false, "gcvote.com", "/setVote.php"); + final String result = base.request(uri, "GET", params, false, false, false).getData(); return result.trim().equalsIgnoreCase("ok"); } @@ -713,7 +715,8 @@ public class cgeovisit extends cgLogForm { return; } - final String page = base.request(false, "www.geocaching.com", "/seek/log.aspx", "GET", params, false, false, false).getData(); + final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/seek/log.aspx"); + final String page = base.request(uri, "GET", params, false, false, false).getData(); viewstates = cgBase.getViewstates(page); trackables = cgBase.parseTrackableLog(page); diff --git a/main/src/cgeo/geocaching/connector/GCConnector.java b/main/src/cgeo/geocaching/connector/GCConnector.java index 2eea539..d3add92 100644 --- a/main/src/cgeo/geocaching/connector/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/GCConnector.java @@ -11,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import android.util.Log; +import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -66,8 +67,7 @@ public class GCConnector extends AbstractConnector implements IConnector { @Override public UUID searchByGeocode(final cgBase base, String geocode, final String guid, final cgeoapplication app, final cgSearch search, final int reason) { - final String host = "www.geocaching.com"; - final String path = "/seek/cache_details.aspx"; + final URI uri = cgBase.buildURI(false, "www.geocaching.com", "/seek/cache_details.aspx"); final String method = "GET"; final Map<String, String> params = new HashMap<String, String>(); if (StringUtils.isNotBlank(geocode)) { @@ -77,7 +77,7 @@ public class GCConnector extends AbstractConnector implements IConnector { } params.put("decrypt", "y"); - String page = base.requestLogged(false, host, path, method, params, false, false, false); + String page = base.requestLogged(uri, method, params, false, false, false); if (StringUtils.isEmpty(page)) { if (app.isThere(geocode, guid, true, false)) { |