gpt4 book ai didi

java - Android - 如果 URL 有 #,getHost() 返回 null

转载 作者:行者123 更新时间:2023-11-30 02:16:52 24 4
gpt4 key购买 nike

我有一些字符串形式的 URL,我想使用 java.net.URI 从这些 URL 生成一个 URI。

这些 URL 实际上是 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();

但在上面的代码中,如果 URL 有 #+getHost() 返回 null。

我尝试按如下方式对 URL 进行编码,但它不起作用:

String encodedUrl = URLEncoder.encode(url, "UTF-8");

我也尝试过将 %23 替换为 #,但它也不起作用。

请帮我解决这个问题......

最佳答案

URLEncoder 并不总是提供正确的输出,尤其是在涉及 URI 时。

请尝试以下方法:

Uri u = Uri.parse(newURL)
.buildUpon()
.appendQueryParameter("param", param)
.build();

String url = u.toString();

其中 param 是网络服务参数(如果使用的话)。这将正确地以 UTF-8 格式对 URL 进行编码。然后,

final String sScheme = u.getScheme( );
final String sHost = u.getHost( );
final String sPath = u.getPath( );

它将按预期工作。

关于java - Android - 如果 URL 有 #,getHost() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29160631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com