URL(Webview) 中如何使用特殊字符?
How use special characters in URL(Webview)?
我目前正在开发一个项目,该项目使用以下约定通过 webview 对用户进行身份验证:
https://username:password@domain.com
当用户的密码包含特殊字符时会出现问题。我四处搜索,试图找出可能的解决方案。
我在收到身份验证请求时曾尝试使用 handler.proceed,但该方法未能取得任何成功。
网页视图加载URL方法只接受一个字符串,这个字符串是否自动URL编码?
我目前使用 String.format(https://%s:%s@domain.com , username , password) 来格式化字符串
我的问题是在密码中是否可以使用带有特殊字符的当前约定。
这似乎只是设备 运行 任何 OS 小于 4.4
的问题
编辑:澄清。
The web view loadURL method only takes a string, is this string automatically URL encoded?
没有。这会导致不希望的结果。以你自己的url为例:
如果在加载之前对其进行 url 编码,它会变成如下内容:
https%3A%2F%2Fusername%3Apassword%40domain.com
显然,这没有多大意义。
I current use String.format(https://%s:%s@domain.com)
to format the String. (...) is it possible to use the current convention with special characters in the password.
当然,只要确保您对实际的用户名和密码进行了 url 编码。例如,假设用户名是电子邮件地址:someone@somewhere.com
,密码是包含 'special' 个字符的内容:@bc:d
。您当前的字符串格式化程序会将您的 url 变成:
https://someone@somewhere.com:@bc:d@domain.com
现在,很明显这看起来不对。相反,url-对用户名和密码进行编码将其变成
https://someone%40somewhere.com:%40bc%3Ad@domain.com
这是完全合法的 url。编码后的用户名和密码can/will然后在接收端再次解码。
要对 Android 执行 url 编码,请查看 URLEncoded
and Uri.encode()
。
我目前正在开发一个项目,该项目使用以下约定通过 webview 对用户进行身份验证: https://username:password@domain.com
当用户的密码包含特殊字符时会出现问题。我四处搜索,试图找出可能的解决方案。
我在收到身份验证请求时曾尝试使用 handler.proceed,但该方法未能取得任何成功。
网页视图加载URL方法只接受一个字符串,这个字符串是否自动URL编码?
我目前使用 String.format(https://%s:%s@domain.com , username , password) 来格式化字符串
我的问题是在密码中是否可以使用带有特殊字符的当前约定。
这似乎只是设备 运行 任何 OS 小于 4.4
的问题编辑:澄清。
The web view loadURL method only takes a string, is this string automatically URL encoded?
没有。这会导致不希望的结果。以你自己的url为例:
如果在加载之前对其进行 url 编码,它会变成如下内容:
https%3A%2F%2Fusername%3Apassword%40domain.com
显然,这没有多大意义。
I current use
String.format(https://%s:%s@domain.com)
to format the String. (...) is it possible to use the current convention with special characters in the password.
当然,只要确保您对实际的用户名和密码进行了 url 编码。例如,假设用户名是电子邮件地址:someone@somewhere.com
,密码是包含 'special' 个字符的内容:@bc:d
。您当前的字符串格式化程序会将您的 url 变成:
https://someone@somewhere.com:@bc:d@domain.com
现在,很明显这看起来不对。相反,url-对用户名和密码进行编码将其变成
https://someone%40somewhere.com:%40bc%3Ad@domain.com
这是完全合法的 url。编码后的用户名和密码can/will然后在接收端再次解码。
要对 Android 执行 url 编码,请查看 URLEncoded
and Uri.encode()
。