2010-10-14 9 views

Répondre

40

Vous pouvez essayer de créer un objet java.net.URL hors de celui-ci. Si ce n'est pas une URL correcte, un MalformedURLException sera lancé.

+2

Pour être clair , il ne lancerait qu'une MalformedURLException 'si aucun protocole n'est spécifié, ou si un protocole inconnu est trouvé'. Contrairement à UrlValidator d'Apache, aucune validation supplémentaire n'est effectuée. – dogbane

+0

Il exécute également d'autres vérifications, par ex. numéros de port. – Grodriguez

+0

Je l'ai cité dans le fichier javadocs http://download.oracle.com/javase/6/docs/api/java/net/URL.html. Ils n'indiquent aucun autre contrôle. – dogbane

34

Vous pouvez utiliser UrlValidator de commons-validator. Cela vous évitera d'écrire du code où le flux logique est guidé par la mise en cache d'une exception, ce qui est généralement considéré comme une mauvaise pratique. Dans ce cas, cependant, je pense qu'il est bien de faire comme d'autres ont suggéré, si vous déplacez cette fonctionnalité à une méthode utilitaire appelé isValidUrl(..)

+0

+1 pour être différent :) – willcodejavaforfood

+0

pas besoin de dupliquer les réponses des autres;) – Bozho

+0

il ne permettra pas les caractères de soulignement dans le nom d'hôte –

6

Complétant réponse Bozho, d'aller plus pratique:

  1. communes Télécharger apache package et décompressez-le. binaries
  2. Inclure commons-validateur-1.4.0.jar dans votre chemin de compilation java.
  3. test avec cet exemple de code (reference):

    //...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. Run/Debug

8

Si vous programmez dans Android, vous pouvez utiliser android.webkit.URLUtil pour tester.

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

Espérons que ce serait utile.

+7

Cela ne vérifie pas réellement si c'est une url il vérifie seulement s'il y a http: // au début, ce dont vous avez besoin avec c'est URLUtil.isValidUrl (url) –

+0

Quick heads up que ça s'appelle URLUtil ... pas URLUtil * S *. – Tommie

-1

Cette fonction valide une URL, et renvoie true (URL valide) ou faux (URL non valide).

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

Assurez-vous de import java.net.URL;

6

Pour Android il suffit d'ajouter cette ligne:

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

Ici, vous allez:

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

Pour Spring Framework utilisateurs. Il y a: org.springframework.util.ResourceUtils#isUrl

Par exemple,

ResourceUtils.isUrl("https://stackoverflow.com/"); 
Questions connexes