我有一些网址'以字符串形式,并从这些网址'我想使用java.net.URI
生成URI。
这些网址'实际上是Android Webview
中的超链接:
clc://C#
或clc://C++
final URI u = new URI(newURL);
final String sScheme = u.getScheme();
final String sHost = u.getHost();
final String sPath = u.getPath();
但在上面的代码中,如果网址包含#
或+
,那么getHost()
将返回null。
我尝试按如下方式对网址进行编码,但它不起作用:
String encodedUrl = URLEncoder.encode(url, "UTF-8");
我也尝试将%23
放到#
,然后它也不起作用。
请帮我解决这个问题.....
答案 0 :(得分:1)
URLEncoder
并不总是提供正确的输出,尤其是在涉及URI时。
请尝试以下方法:
Uri u = Uri.parse(newURL)
.buildUpon()
.appendQueryParameter("param", param)
.build();
String url = u.toString();
其中param
是一个Web服务参数(如果使用any)。这将正确编码UTF-8格式的URL。然后,
final String sScheme = u.getScheme( );
final String sHost = u.getHost( );
final String sPath = u.getPath( );
它将按预期工作。