Кодирование URL в Android

Как Вы кодируете 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.

323
задан Peter Mortensen 25 May 2015 в 09:39
поделиться

1 ответ

Вы не кодируете весь 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();
615
ответ дан 23 November 2019 в 00:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: