So überprüfen Sie, ob ein String in Java eine gültige URL ist

Lesezeit: 4 Minuten

Benutzer-Avatar
lacas

Wie kann ich überprüfen, ob eine Zeichenfolge eine URL in Java ist?

  • Mögliches Duplikat von Validating URL in Java

    – james.garriss

    6. Dezember 2016 um 19:15 Uhr

  • Ich suche auch nach dieser Lösung. Vielen Dank für diese Frage.

    – Saiful-Islam

    15. September 2018 um 7:31 Uhr

Benutzer-Avatar
Grodriguez

Sie können versuchen, eine zu erstellen java.net.URL Objekt daraus. Wenn es sich nicht um eine richtige URL handelt, a MalformedURLException wird geworfen.

  • Nur um das klarzustellen, es würde nur eine MalformedURLException auslösen if no protocol is specified, or an unknown protocol is found. Anders als beim UrlValidator von Apache wird keine zusätzliche Validierung durchgeführt.

    – Hundebann

    14. Oktober 2010 um 10:44 Uhr

  • Es führt tatsächlich auch andere Prüfungen durch, zB Portnummern.

    – Grodriguez

    14. Oktober 2010 um 10:53 Uhr

  • Ich habe das aus den Javadocs zitiert download.oracle.com/javase/6/docs/api/java/net/URL.html. Sie geben keine anderen Prüfungen an.

    – Hundebann

    14. Oktober 2010 um 11:05 Uhr

  • Das sagen die Javadocs, aber die Überprüfungen werden durchgeführt (Sie können es selbst versuchen oder sich den Quellcode ansehen, wenn Sie möchten).

    – Grodriguez

    14. Oktober 2010 um 11:12 Uhr

  • @Tommie “192.168.0.1” (ohne http://) ist keine gültige URL. Ein … Erstellen java.net.URL die Übergabe als Parameter schlägt fehl java.net.MalformedURLException: no protocol. Dies ist das erwartete Verhalten und wird als solches dokumentiert. Hier gibt es keine Fehlalarme.

    – Grodriguez

    23. März 2015 um 8:13 Uhr


Benutzer-Avatar
Bozo

Sie können verwenden UrlValidator aus Commons-Validator. Es erspart Ihnen das Schreiben von Code, bei dem der logische Fluss durch das Abfangen einer Ausnahme geleitet wird, was im Allgemeinen als schlechte Praxis angesehen wird. In diesem Fall denke ich jedoch, dass es in Ordnung ist, wie von anderen vorgeschlagen, diese Funktionalität in eine aufgerufene Hilfsmethode zu verschieben isValidUrl(..)

  • es erlaubt keine Unterstriche im Hostnamen

    – Udit Kumawat

    9. März 2018 um 7:25 Uhr

Benutzer-Avatar
Rafa0809

Zum Android füge einfach diese Zeile hinzu:

boolean isValid = URLUtil.isValidUrl( "your.uri" );

  • Dies funktioniert nicht, wenn das Schema/Präfix (zB “http”) fehlt (zB “stackoverflow.com”) und es funktioniert auch nicht mit dem Schema/Präfix “ftp” (zB “127.0.0.1”).

    – Neph

    17. März 2020 um 14:43 Uhr

  • Daher der Unterschied zwischen URL und URI

    – Rafa0809

    17. März 2020 um 23:03 Uhr

  • Ich habe auch die anderen Vorschläge ausprobiert (new URL/new URI) aber URL mag keine URLs ohne Schema (und es fühlt sich an, als würde es nur nach dem Schema suchen, sonst nichts) und URI scheint “true” zurückzugeben, egal was Sie darauf werfen (sogar “—“). Bisher habe ich keinen Weg gefunden, das zu tun, was op gefragt hat, der in 99,9% der Fälle richtig funktioniert.

    – Neph

    18. März 2020 um 9:34 Uhr

Benutzer-Avatar
Alijandro

Wenn du einprogrammierst AndroidDu könntest benutzen android.webkit.URLUtil zu testen.

URLUtil.isHttpUrl(url)
URLUtil.isHttpsUrl(url)

Hoffe es wäre hilfreich.

Benutzer-Avatar
BullyWiiPlaza

public static boolean isValidURL(String urlString) {
    try {
        URL url = new URL(urlString);
        url.toURI();
        return true;
    } catch (Exception e) {
        return false;
    }
}

Diese prüft gem RFC2396wie <scheme>://<authority><path>?<query>#<fragment>aber scheme muss bekannt sein URL Quellcode. Diese sind nicht gültig:

  • telnet://melvyl.ucop.edu
  • news:comp.infosystems.www.servers.unix
  • www.google.com

  • Warum nicht einfach new URI(urlString)?

    – Chloe

    11. April 2019 um 20:11 Uhr

Benutzer-Avatar
ConcurrentHashMap

Ergänzend zur Antwort von Bozho, um praktischer zu werden:

  1. Laden Sie Apache Commons herunter Paket und entpacke es.
    Binärdateien
  2. Fügen Sie commons-validator-1.4.0.jar in Ihren Java-Erstellungspfad ein.
  3. Testen Sie es mit diesem Beispielcode (Hinweis):

    //...your imports
    
    import org.apache.commons.validator.routines.*; // Import routines package!
    
    public static void main(String[] args){
    
    // Get an UrlValidator
    UrlValidator defaultValidator = new UrlValidator(); // default schemes
    if (defaultValidator.isValid("http://www.apache.org")) {
        System.out.println("valid");
    }
    if (!defaultValidator.isValid("http//www.oops.com")) {
        System.out.println("INvalid");
    }
    
    // Get an UrlValidator with custom schemes
    String[] customSchemes = { "sftp", "scp", "https" };
    UrlValidator customValidator = new UrlValidator(customSchemes);
    if (!customValidator.isValid("http://www.apache.org")) {
        System.out.println("valid");
    }
    
    // Get an UrlValidator that allows double slashes in the path
    UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
    if (doubleSlashValidator.isValid("http://www.apache.org//projects")) {
        System.out.println("INvalid");
    }
    
  4. Ausführen/Debuggen

  • Warum nicht einfach new URI(urlString)?

    – Chloe

    11. April 2019 um 20:11 Uhr

Benutzer-Avatar
Aaron Esau

Diese Funktion validiert eine URL und gibt true (gültige URL) oder false (ungültige URL) zurück.

public static boolean isURL(String url) {
    try {
        new URL(url);
        return true;
    } catch (Exception e) {
        return false;
    }
}

Sicher sein zu import java.net.URL;

  • Versagt nicht http://ProductDetail/2Thumbz, Inc.?source=Admin wenn es sollte (Komma, Leerzeichen, Punkt).

    – Chloe

    27. Januar 2019 um 4:57 Uhr

1080850cookie-checkSo überprüfen Sie, ob ein String in Java eine gültige URL ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy