Java - URL が存在するかどうかを確認する最も簡単な方法 質問する

Java - URL が存在するかどうかを確認する最も簡単な方法 質問する

こんにちは。私は、さまざまな URL を調べて、それらが存在するかどうかをチェックするプログラムを作成しています。基本的には、返されたエラー コードが 404 かどうかをチェックしています。ただし、1000 を超える URL をチェックしているので、これを非常に迅速に実行できるようにしたいと考えています。以下は私のコードですが、これを迅速に動作させるにはどうすればいいか考えています (可能であれば):

final URL url = new URL("http://www.example.com");
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
int responseCode = huc.getResponseCode();

if (responseCode != 404) {
System.out.println("GOOD");
} else {
System.out.println("BAD");
}

JSoup を使用する方が早いでしょうか?

一部のサイトではコード 200 が表示され、独自のエラー ページが用意されていることは承知していますが、私がチェックしているリンクではこれが行われていないため、これは必要ありません。

ベストアンサー1

GET リクエストの代わりに「HEAD」リクエストを送信してみてください。レスポンス本文がダウンロードされないため、より高速になります。

huc.setRequestMethod("HEAD");

再度、応答ステータスが 400 でないかどうかを確認する代わりに、200 であるかどうかを確認します。つまり、否定ではなく肯定を確認します。404、403、402 など、40x ステータスはすべて、無効な存在しない URL とほぼ同等です。

マルチスレッドを利用すると、さらに高速化できます。

おすすめ記事