2

Javaで壊れたURL(HTTP 404)を検出する最も効率的な方法は何ですか? これをループで実行し、できるだけ時間を短縮したいと思います。

4

4 に答える 4

2

URL を要求した後でのみ 404 を検出できます。コード (リダイレクトの場合は 200、リダイレクトの場合は 301、欠落ファイルの場合は 404) を含むヘッダーが返され、それを確認できます。

そのため、リクエストを実行して、404 が返されるまで待つ必要があります。

スキップしてはならないかなり適切なコメントが以下にあるので、ここで繰り返します: 最適化の可能性 (既存の URL の場合): GET の代わりに HEAD リクエストを使用します。

于 2011-01-26T10:05:17.270 に答える
1

URL が壊れる可能性があるさまざまな方法があります。

  • 構文的に無効
  • 存在しないドメインが含まれています
  • サーバーに到達できません
  • サーバーは接続を受け入れません
  • サーバーがエラーで応答する

最初のものを除いて、これらすべてに比較的長い時間がかかる可能性があり (おそらく平均で 1 秒以上)、別のコンピューターと通信しているため、速度を上げる方法はありません。

できることは、スレッド プールを使用して多数の URL を並行してチェックすることだけです。

于 2011-01-26T10:03:19.730 に答える
0

例外をキャッチして HTTP ステータス コードをチェックすることで、URL 接続を確立し、URL が壊れていることを確認できます。例外がスローされず、HTTP ステータスが 200 の場合、URL は OK です。

しかし、注意してください!場合によっては、URL が壊れているにもかかわらず、アプリケーションが人間が読めるステータス 200 のエラー ページを返します。たとえば、サイト www.somecompany.com は存在しますが、ページ www.somecompany.com/foo.html は存在しません。そこにアクセスしようとすると、「ページが存在しません」というメッセージが表示されますが、HTTP ステータスは 200 です。これは、ページ コンテンツのみを解析することで (場合によっては) 解決できます。

于 2011-01-26T10:17:54.760 に答える