使用java从奇怪但有效的url获取域
我需要从这个url获取主机使用java从奇怪但有效的url获取域,java,url,Java,Url,我需要从这个url获取主机 android-app://com.google.android.googlequicksearchbox?Pub_id={siteID} java.net.URL和java.net.URI无法处理它。问题在于{和}字符对URI无效。看起来像是创建URI时未正确解析的占位符 您可以使用String.replaceAll()删除这两个字符: String value = "android-app://com.google.android.googlequicksea
android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}
java.net.URL
和java.net.URI
无法处理它。问题在于{
和}
字符对URI无效。看起来像是创建URI时未正确解析的占位符
您可以使用String.replaceAll()
删除这两个字符:
String value = "android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}";
URI uri = URI.create(value.replaceAll("[{}]", ""));
System.out.println(uri.getHost()); // com.google.android.googlequicksearchbox
您可以尝试以下代码
String url = "android-app://com.google.android.googlequicksearchbox?Pub_id={siteID}";
url = url.replace("{", "").replace("}","");
URI u;
try {
u = new URI(url);
System.out.println(u.getHost());
} catch (URISyntaxException e) {
e.printStackTrace();
}
你看,最终我需要路径、方案和查询。
我刚刚找到了用于解析此类URL的超级快速库
它也非常灵活 如果没有为
android应用程序安装协议处理程序:
,则会收到一个带有“未知协议”的异常。另外,{}
可能有问题:“…?Pub_id=“+urlcoder.encode(“{siteID}”,“UTF-8”):
尽管我怀疑您需要填写{siteID}
。请您写出对URI无效的所有字符。我知道另一个“\”@DennisGlot看到了吗