2010-11-14 31 views
7

Devo verificare se esiste un URL o meno. Voglio scrivere un servlet per questo, per verificare se esiste o meno un URL. Se l'URL inserito non esiste, allora dovrebbe restituire un messaggio.Verifica se esiste o meno un URL

+6

un URL non può, in generale, può dire di non esistere. – SLaks

+0

perchè java doc ?? –

risposta

0

È possibile stabilire una connessione, richiamare il flusso di input e verificare la presenza di null.

22

migliore soluzione per HTTP:

public static boolean exists(String URLName){ 
    try { 
     HttpURLConnection.setFollowRedirects(false); 
     // note : you may also need 
     //  HttpURLConnection.setInstanceFollowRedirects(false) 
     HttpURLConnection con = 
     (HttpURLConnection) new URL(URLName).openConnection(); 
     con.setRequestMethod("HEAD"); 
     return (con.getResponseCode() == HttpURLConnection.HTTP_OK); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
    } 

Se siete alla ricerca di qualsiasi altro URL provare questo codice

public static boolean exists(String URLName){ 
     boolean result = false; 
     try { 
      url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD/"); 
      //url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD123/");//this will fail 

      input = url.openStream(); 

      System.out.println("SUCCESS"); 
      result = true; 

      } catch (Exception ex) { 
       Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     return result; 
    } 

Fonte: http: //www.rgagnon.com/javadetails/ java-0059.html

+2

'http' non è l'unico protocollo/schema in un URL. –

+0

@Michael Konietzka Aggiornamento probabilmente risponde al tuo commento –

+0

Ho bisogno di usare Httpclient ei suoi metodi per verificare la presenza di URL puoi dirmi come usare il servizio httpClient. Ho provato a scrivere questo servizio in un servelt ma sta dando un'eccezione. – ha22109

0

Ho usato questo script bash per gli URL di controllo, ma non è necessario mettere tutti i file in un file "urls.csv"

#!/bin/bash 

############################################### 
# mailto: [email protected] 
# checkurls 
# https://github.com/ggerman/checkurls/ 
# require curl 
############################################### 

url() { 
    cat urls.csv | 
    replace | 
    show 
} 

replace() { 
    tr ',' ' ' 
} 

show() { 
    awk '{print $1}' 
} 

url | \ 
while read CMD; do 
    echo $CMD 
    curl -Is $CMD | head -n 1 
done