【发布时间】:2011-05-22 09:44:48
【问题描述】:
给定一个字符串,我如何确定它是 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,因为没有定义协议。
【问题讨论】:
-
... 所以你捕捉到异常返回false,说明相对URL其实不是绝对URL;这是预期的结果。那么这是怎么回事呢?
-
“www.google.com”和“/questions/ask”不是网址。它们可能是绝对或相对 URI,具体取决于隐含的 URL 方案。因此,此代码属于“按预期工作”的类别。
-
注意 URL 使用您的网络连接
-
/是file:的绝对 URL,但它是http:的相对 URL。如果您不知道基本 URL(实际上是协议),则无法确定给定 URL 的相关性。在您的示例中 -www.google.com是一个相对 URL,因此您的方法在这种情况下是正确且符合规范的,但它不能解决您的问题。
标签: java url relative-url