Wie kann ich bei einer Zeichenkette feststellen, ob es sich um eine absolute oder relative URL in Java handelt? Ich habe den folgenden Code ausprobiert:
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;
}
Das Problem ist, dass alle relativen URLs ( www.google.com
o /questions/ask
). werfen einen MalformedURLException
weil kein Protokoll definiert ist.
2 Stimmen
... Sie fangen also die Ausnahme ab und geben false zurück, was darauf hinweist, dass die relative URL in Wirklichkeit keine absolute URL ist, was das erwartete Ergebnis ist. Inwiefern ist das also ein Problem?
0 Stimmen
"www.google.com" und "/questions/ask" sind keine URLs. Sie können absolute oder relative URIs sein, je nach dem impliziten URL-Schema. Dieser Code fällt also unter die Kategorie "funktioniert wie erwartet".
0 Stimmen
Beachten Sie, dass die URL Ihre Netzwerkverbindung nutzt
4 Stimmen
/
ist eine absolute URL fürfile:
aber es ist relativ fürhttp:
. Wenn Sie die Basis-URL (d. h. das Protokoll) nicht kennen, können Sie die Relativität der angegebenen URL nicht bestimmen. In Ihrem Beispiel -www.google.com
ist eine relative URL, so dass Ihre Methode in diesem Fall korrekt und spezifikationskonform ist, aber sie löst Ihr Problem nicht.