Vérification de l'état du site Web en Java


En Java, existe-t-il une bibliothèque standard qui permet de vérifier l'état d'un site Web, c'est-à-dire si le site Web est accessible ou non?

Sinon, existe-t-il des bibliothèques tierces qui font la même chose?

Author: APerson, 2012-12-08

5 answers

Vous pouvez faire la chose ci-dessous, où vous obtenez une réponse comme 200 c'est-à-dire accessible sinon non accessible

public static boolean isAccessable(String url, int timeout) {
    url = url.replaceFirst("https", "http"); // Otherwise an exception may
                                                // be thrown on invalid SSL
                                                // certificates.

    try {
        HttpURLConnection connection = (HttpURLConnection) new URL(url)
                .openConnection();
        connection.setConnectTimeout(timeout);
        connection.setReadTimeout(timeout);
        connection.setRequestMethod("HEAD");
        int responseCode = connection.getResponseCode();
        if (responseCode != 200) {
            return false;
        }
    } catch (IOException exception) {
        return false;
    }
    return true;
}
 2
Author: Bhavik Ambani, 2012-12-08 15:15:37

Vous pouvez ouvrir une connexion à l'URL et récupérer le code de réponse et (éventuellement) le contenu:

    public static boolean isSiteUp(URL site) {
        try {
            HttpURLConnection conn = (HttpURLConnection) site.openConnection();
            conn.getContent();
            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                return true;
            }
            return false;
        } catch (SocketTimeoutException tout) {
            return false;
        } catch (IOException ioex) {
            // You may decide on more specific behaviour...
            return false;
        }
      }

Les codes de réponse que vous considérez comme signifiant que le site est "haut" et "bas" dépendront légèrement de votre application. (Si vous obtenez une réponse "contenu interdit", cela signifie-t-il que le site est" up " pour vos besoins?) À moins que le site ne renvoie réellement un code pour dire "Je suis en panne", alors vous devez prendre une décision quant à savoir si, par exemple, un délai d'attente représente le site en panne ou vous avez un problème de pare-feu local, etc. Mais néanmoins, une variante de ce qui précède devrait suffire.

 2
Author: Neil Coffey, 2012-12-08 15:21:50

Vous pouvez utiliser une bibliothèque HTTP comme https://hc.apache.org / faites une demande et vérifiez le code de retour

 1
Author: Federico, 2012-12-08 14:59:06

Vous pouvez utiliser jersey client (de nombreux exemples tels que http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/)

Ou vous pouvez utiliser org.Apache.http.client.

 1
Author: kasavbere, 2012-12-08 15:02:18

Vous pouvez utiliser n'importe quelle bibliothèque JAVA qui peut faire un appel http. Deux de ces bibliothèques java populaires sont HttpClient et URLConnection .

Il vous suffit donc d'obtenir le statut de l'URL en utilisant l'une des bibliothèques ci-dessus. Si le statut est 200, l'URL est en hausse.

Si vous voulez le faire dans n'importe quelle machine basée sur unix, alors l'utilitaire curl est très facile de connaître l'état. Il suffit de faire un homme sur curl vous obtiendrez toutes les options.

 1
Author: rai.skumar, 2012-12-08 15:13:59