Как вы кодируете URL в Android?
Я думал, что это было так:
final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8");
URL url = new URL(encodedURL);
Если я сделаю выше, http://
вurlAsString
замещается http%3A%2F%2F
в encodedURL
а затем я получаю , java.net.MalformedURLException
когда я использую URL.
Uri.encode(query);
вместоЯ собираюсь добавить одно предложение здесь. Вы можете сделать это, чтобы избежать необходимости получать какие-либо внешние библиотеки.
Попробуйте это:
Вы можете видеть, что в этом конкретном URL мне нужно закодировать эти пробелы, чтобы я мог использовать его для запроса.
Это использует пару функций, доступных вам в классах Android. Во-первых, класс URL может разбить URL-адрес на соответствующие компоненты, поэтому вам не нужно выполнять поиск / замену строк. Во-вторых, этот подход использует преимущества класса URI для правильного экранирования компонентов, когда вы создаете URI через компоненты, а не из одной строки.
Прелесть этого подхода в том, что вы можете взять любую действительную строку URL-адреса и заставить ее работать, не требуя каких-либо специальных знаний о ней самостоятельно.
источник
Для Android я бы использовал String android.net.Uri.encode (String s)
Ex /
источник
Uri.encode("a=1&b=1")
производит,a%3D1%26b%3D1
но ожидаетсяa=1&b=1
a=1&b=1
как запрос, вы хотите запросить именно это.Также вы можете использовать это
это самый простой метод
источник
источник
Вы можете использовать ниже методы
или
второй лучше первого
источник
Найдите арабские символы и замените их кодировкой UTF-8. что-то вроде этого:
источник