Java Struts-Controllo dei collegamenti morti


Ho bisogno di controllare un set di siti intranet. Ho provato a usare il codice qui sotto. (Appena ricevuto questo codice da ricerca casuale su internet). Ho chiamato questo metodo sulla mia classe di azione. Ma la maggior parte dei siti in cui entrare nella parte di eccezione. Ricevevo eccezioni di protocollo e UnknownHostException anche se ero in grado di aprire questi siti dal mio browser.

Codice di riferimento:

public boolean isLive(String link) {  
  HttpURLConnection urlConnection = null;  
  try {  
    URL url = new URL(link);  
    urlConnection = (HttpURLConnection) url.openConnection();  
    urlConnection.setRequestMethod("HEAD");  
    urlConnection.setConnectTimeout(5000); /* timeout after 5s if can't connect */  
    urlConnection.setReadTimeout(5000); /* timeout after 5s if the page is too slow */  
    urlConnection.connect();  
    String redirectLink = urlConnection.getHeaderField("Location");  
    if (redirectLink != null && !link.equals(redirectLink)) {  
      return isLive(redirectLink);  
    } else {  
      return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;  
    }  
  } catch (Exception e) {  
    return false;  
  } finally {  
    if (urlConnection != null) {  
      urlConnection.disconnect();  
    }  
  }  
}  
Author: Gonzalo Garcia Lasurtegui, 2011-10-23

2 answers

Penso che nessun problema con il codice. Hai un timeout di connessione di 5 secondi

urlConnection.setConnectTimeout(5000)   

Qualsiasi query che richiede più di 5 secondi sarà considerata un collegamento morto.Il tuo browser ha un timeout molto più lungo del tuo codice, quindi puoi navigare su quei siti nel browser

 0
Author: bilash.saha, 2011-10-23 10:32:17

Se ricevi eccezioni di protocollo e eccezioni host sconosciute, dovremmo saperne di più per aiutarti. La tua macchina è configurata per passare attraverso un proxy? Hai definizioni di host che non sarebbero condivise dall'utente del contenitore dell'app?

Inoltre, considera di usare qualcosa come HttpClient per concludere cose come questa piuttosto che farlo manualmente; solo troppo lavoro.

 0
Author: Dave Newton, 2011-10-23 14:56:56