Как Вы кодируете URL в Android?
Я думал, что это было похоже на это:
final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8");
URL url = new URL(encodedURL);
Если я делаю вышеупомянутое, http://
в urlAsString
заменяется http%3A%2F%2F
в encodedURL
и затем я получаю a java.net.MalformedURLException
когда я использую URL.
Вы не кодируете весь URL-адрес, а только его части, которые приходят из «ненадежных источников».
String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "http://stackoverflow.com/search?q=" + query;
В качестве альтернативы вы можете использовать Strings.urlEncode (String str) of DroidParts , который не генерирует проверенные исключения.
Или используйте что-нибудь вроде
String uri = Uri.parse("http://...")
.buildUpon()
.appendQueryParameter("key", "val")
.build().toString();