La surveillance de la disponibilité des URL HTTP est cruciale pour maintenir l'intégrité du système et la satisfaction des utilisateurs. L'approche Java préférée pour y parvenir est un sujet de discussion dans cet article.
L'extrait de code fourni tente d'envoyer une requête ping à une URL HTTP à l'aide d'un objet URLConnection. Elle est fonctionnelle mais soulève plusieurs soucis :
Utilisation de Java.net.Socket :
<code class="java">public static boolean pingHost(String host, int port, int timeout) { try (Socket socket = new Socket()) { socket.connect(new InetSocketAddress(host, port), timeout); return true; } catch (IOException e) { return false; } }</code>
Utilisation d'InetAddress.isReachable() :
<code class="java">boolean reachable = InetAddress.getByName(hostname).isReachable();</code>
Cependant, cette méthode ne teste pas explicitement le port 80, ce qui risque de provoquer des faux négatifs en raison des restrictions du pare-feu.
<code class="java">HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("HEAD"); int responseCode = connection.getResponseCode(); if (responseCode != 200) { // Not available }</code>
<code class="java">public static boolean pingURL(String url, int timeout) { url = url.replaceFirst("^https", "http"); // Handle SSL certificate issues try { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setConnectTimeout(timeout); connection.setReadTimeout(timeout); connection.setRequestMethod("HEAD"); int responseCode = connection.getResponseCode(); return (200 <= responseCode && responseCode <= 399); } catch (IOException exception) { return false; } }</code>
L'objet HttpURLConnection gère automatiquement le regroupement et la fermeture des connexions, éliminant ainsi le besoin d'un nettoyage explicite .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!