2015-12-17 3 views
1

В настоящее время я работаю над проектом, который использует следующую конвенцию для аутентификации пользователей через WebView: https://username:[email protected]Как использовать специальные символы в URL (Webview)?

Проблема возникает тогда, когда пользователи имеют пароль со специальными символами. У меня есть поиск вокруг попытки найти возможное решение.

Я пробовал использовать handler.proceed, когда я получил запрос на аутентификацию, но не смог добиться успеха с этим методом.

Веб-объект loadURL метод принимает только строку, эта строка автоматически закодирована в URL?

I текущее использование string.Format (https://%s:%[email protected], имя пользователя, пароль) для форматирования строки

Мой вопрос заключается в возможно использовать текущую конвенцию со специальными символами в пароле.

Это, кажется, только вопрос на устройствах, работающих под управлением любой ОС менее 4,4

правок разъяснений.

ответ

0

Веб-объект loadURL метод принимает только строку, эта строка автоматически закодирована в URL?

No. Это приведет к нежелательным результатам. Возьмите свой собственный URL, например:

https://username:[email protected]

Если бы URL-закодирован перед загрузкой, она превратится в нечто вроде:

https%3A%2F%2Fusername%3Apassword%40domain.com 

Очевидно, что не будет имеют смысл.

I текущее использование String.format(https://%s:%[email protected]) для форматирования строки. (...) можно использовать текущее соглашение со специальными символами в пароле.

Несомненно, убедитесь, что вы указали правильное имя пользователя и пароль. Например, предположим, что имя пользователя - это адрес электронной почты: [email protected], а пароль - это что-то, что содержит некоторые специальные символы: @bc:d. Ваш текущий форматировщик строк превратит ваш URL в:

https://[email protected]:@bc:[email protected] 

Теперь, должно быть очевидно, что это не выглядит правильным. Вместо этого url-encoding имя пользователя и пароль превращают это в

https://someone%40somewhere.com:%40bc%[email protected] 

Это совершенно юридический url. Закодированное имя пользователя и пароль могут/будут снова декодироваться на принимающей стороне.

Чтобы выполнить кодировку url на Android, просмотрите URLEncoded и Uri.encode().