给定一个字符串,如何在Java中确定它是绝对URL还是相对URL? 我尝试了以下代码:
private boolean isAbsoluteURL(String urlString) {
boolean result = false;
try
{
URL url = new URL(urlString);
String protocol = url.getProtocol();
if (protocol != null && protocol.trim().length() > 0)
result = true;
}
catch (MalformedURLException e)
{
return false;
}
return result;
}
问 题 是 所有 相对 URL(www.google.com
或 /questions/ask
)都会 抛出 MalformedURLException
,因为没有 定义 协议。
file:
协议而言,/
是一个绝对 URL,但是对于http:
协议而言,/
是一个相对 URL。如果你不知道基础 URL(实际上是协议),你无法确定给定 URL 的相对性。在你的例子中,www.google.com
是一个相对 URL,所以你的方法在这种情况下是正确的且符合规范,但它并不能解决你的问题。 - khachik