Memantau ketersediaan URL HTTP adalah penting untuk mengekalkan integriti sistem dan kepuasan pengguna. Pendekatan Java pilihan untuk mencapai perkara ini ialah subjek perbincangan dalam artikel ini.
Coretan kod yang disediakan cuba ping URL HTTP menggunakan objek URLConnection. Ia berfungsi tetapi menimbulkan beberapa kebimbangan:
Menggunakan 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>
Menggunakan InetAddress.isReachable():
<code class="java">boolean reachable = InetAddress.getByName(hostname).isReachable();</code>
Walau bagaimanapun, kaedah ini tidak menguji port 80 secara eksplisit, mempertaruhkan negatif palsu disebabkan oleh sekatan firewall.
<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>
Objek HttpURLConnection mengendalikan pengumpulan dan penutupan sambungan secara automatik, menghapuskan keperluan pembersihan untuk eksplisit .
Atas ialah kandungan terperinci Bagaimana untuk Ping URL HTTP dengan Amanah dalam Java untuk Pemantauan Ketersediaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!