Wie kann ich am besten überprüfen, ob eine URL in Java gültig ist?
Wenn versucht wird, einen anzurufen new URL(urlString)
und zu fangen MalformedURLException
, scheint er mit allem, was damit beginnt, zufrieden zu sein http://
.
Es geht mir nicht darum, eine Verbindung herzustellen, sondern nur um die Gültigkeit. Gibt es dafür eine Methode? Eine Anmerkung in Hibernate Validator? Soll ich einen regulären Ausdruck verwenden?
Bearbeiten: Einige Beispiele für akzeptierte URLs sind http://***
und http://my favorite site!
.
java
validation
url
Eric Wilson
quelle
quelle
URL
Konstruktor akzeptiert?http://***
" funktioniert. "http://my favorite site!
" funktioniert. Ich kann es nicht dazu bringen, eine Ausnahme auszulösen (wenn http: // am Anfang steht)Antworten:
Erwägen Sie die Verwendung der Apache Commons UrlValidator-Klasse
Es gibt mehrere Eigenschaften , die Sie festlegen können , kontrollieren , wie diese Klasse verhält sich standardmäßig
http
,https
undftp
akzeptiert werden.quelle
local
usw.new URL(name).toURI()
es zur Lösung wird.Hier ist, wie ich es versucht und nützlich gefunden habe:
quelle
URL u = new URL(http://google).toURI();
wird keine Ausnahme auslösen.new URL(http://google)
es gültig ist ^^ Wir haben viele interne Domains in meiner Firma wie dieseIch würde dies gerne als Kommentar zu Tendayi Mawushes Antwort posten , aber ich fürchte, es gibt nicht genug Platz;)
Dies ist der relevante Teil aus der Apache Commons UrlValidator- Quelle :
Von dort aus können Sie ganz einfach Ihren eigenen Validator erstellen.
quelle
Am einfachsten ist es, die Verfügbarkeit der URL zu überprüfen:
quelle
Mein Lieblingsansatz ohne externe Bibliotheken:
quelle
Gemessen am Quellcode für
URI
, dieDer Konstruktor validiert mehr als die anderen Konstruktoren. Sie könnten das versuchen, aber YMMV.
quelle
Ich mochte keine der Implementierungen (weil sie einen Regex verwenden, was eine teure Operation ist, oder eine Bibliothek, die ein Overkill ist, wenn Sie nur eine Methode benötigen), also habe ich mit einigen die Klasse java.net.URI verwendet zusätzliche Überprüfungen und Beschränkung der Protokolle auf: http, https, file, ftp, mailto, news, urn.
Und ja, Ausnahmen zu fangen kann eine teure Operation sein, aber wahrscheinlich nicht so schlimm wie reguläre Ausdrücke:
quelle
Validator-Paket:
Es scheint ein schönes Paket von Yonatan Matalon namens UrlUtil zu geben . Zitiert seine API:
Suns Ansatz - Überprüfen Sie die Netzwerkadresse
Die Java-Site von Sun bietet einen Verbindungsversuch als Lösung für die Überprüfung von URLs.
Andere Regex-Code-Schnipsel:
Es gibt Regex-Validierungsversuche auf der Oracle-Website und auf weberdev.com .
quelle