2010-10-14 9 views

Respuesta

40

Puede intentar crear un objeto java.net.URL. Si no es una URL adecuada, se lanzará un MalformedURLException.

+2

Para que quede claro , solo lanzaría una MalformedURLException 'si no se especifica ningún protocolo, o si se encuentra un protocolo desconocido". A diferencia, UrlValidator de Apache, no se realiza ninguna validación adicional. – dogbane

+0

En realidad, realiza otros controles también, p. números de puerto. – Grodriguez

+0

Cité eso de javadocs http://download.oracle.com/javase/6/docs/api/java/net/URL.html. No declaran ningún otro cheque. – dogbane

34

Puede usar UrlValidator de commons-validator. Le ahorrará escribir código en el que el flujo lógico se guía mediante el almacenamiento en caché de una excepción, que generalmente se considera una mala práctica. En este caso, sin embargo, yo creo que está bien para hacer lo que otros sugirieron, si se mueve esta funcionalidad a un método de utilidad llamada isValidUrl(..)

+0

+1 por ser diferente :) – willcodejavaforfood

+0

no es necesario duplicar las respuestas de otros;) – Bozho

+0

no permitirá guiones bajos en el nombre de host –

6

Como complemento de la respuesta Bozho, para ir más práctico:

  1. Commons Descargar Apache package y descomprimirlo binaries
  2. Incluye commons-validator-1.4.0.jar en tu ruta de compilación java.
  3. prueba con este código de ejemplo (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. Ejecutar/Depurar

8

Si programa en Android, se podría utilizar para probar android.webkit.URLUtil.

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

Espero que sea útil.

+7

Esto realmente no verifica si es una url solo comprueba si hay http: // al principio, lo que necesita con eso es URLUtil.isValidUrl (url) –

+0

Encabezado rápido que se llama URLUtil ... no URLUtil * S *. – Tommie

-1

Esta función valida una URL y devuelve verdadero (URL válido) o falso (URL no válida).

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

Asegúrese de import java.net.URL;

6

Para Android sólo tiene que añadir esta línea:

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

Aquí van:

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

Para Resorte del marco usuarios. No: org.springframework.util.ResourceUtils#isUrl

Ej

ResourceUtils.isUrl("https://stackoverflow.com/"); 
Cuestiones relacionadas