ホームページ  >  記事  >  Java  >  Java ネットワーク接続リダイレクト失敗例外 (RedirectFailureException) を解決する方法

Java ネットワーク接続リダイレクト失敗例外 (RedirectFailureException) を解決する方法

王林
王林オリジナル
2023-08-18 22:24:151332ブラウズ

Java ネットワーク接続リダイレクト失敗例外 (RedirectFailureException) を解決する方法

タイトル: Java ネットワーク接続リダイレクト失敗例外 (RedirectFailureException) を解決する方法

はじめに:
Java ネットワーク プログラミングでは、リダイレクト関数がよく使用されます。つまり、指定された URL は自動的に他の URL にジャンプします。ただし、特殊な状況により、ネットワーク接続のリダイレクトが失敗する例外、つまり RedirectFailureException が発生することがあります。この記事では、この例外を解決する方法とサンプルコードを紹介します。

1. RedirectFailureException とは何ですか?
RedirectFailureException は、Java ネットワーク接続ライブラリ (HttpURLConnection や HttpClient など) がネットワークに接続するときに発生する例外の 1 つです。これは通常、次の状況で発生します:

  1. リダイレクトされた URL が不正であるか、アクセスできない;
  2. リダイレクトの数が多すぎて、事前に設定された最大制限を超えています;
  3. サーバーから返されたリダイレクト ステータス コードが正しくありません;
  4. 接続タイムアウトまたはネットワーク エラー。

2. RedirectFailureException を解決する方法:

  1. URL の正当性を確認します:
    RedirectFailureException が発生した場合は、まずリダイレクトされた URL が正当であるかどうかを確認します。 URL の有効性を確認するには、java.net.URL クラスの isValid() メソッドを使用します。サンプル コードは次のとおりです。
public static boolean isValidURL(String url) {
    try {
        new URL(url).toURI();
        return true;
    } catch (MalformedURLException | URISyntaxException e) {
        return false;
    }
}
  1. リダイレクト数の制限を増やします:
    サーバー上のリダイレクト数が事前に設定された最大制限を超える場合があり、その結果、例外。 HttpURLConnection または HttpClient の setMaxRedirects() メソッドを設定することで、リダイレクト制限を増やすことができます。サンプル コードは次のとおりです。
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFoll
owRedirects(false);
connection.setMaxRedirects(10); // 设置重定向次数限制为10次
  1. リダイレクトされた URL の処理:
    リダイレクトすると、サーバーはリダイレクトされた URL を含む「Location」ヘッダー フィールドを返します。このフィールドを取得することで、接続を新しい URL にリダイレクトできます。サンプル コードは次のとおりです。
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
String redirectUrl = connection.getHeaderField("Location");
URL newUrl = new URL(redirectUrl);
HttpURLConnection newConnection = (HttpURLConnection) newUrl.openConnection();
  1. ネットワーク接続タイムアウト設定を増やします。
    ネットワーク接続タイムアウトにより、リダイレクトが失敗するという例外が発生することがあります。接続タイムアウトと読み取りタイムアウトを設定することで、タイムアウト設定を増やすことができます。サンプル コードは次のとおりです。
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000); // 连接超时设置为5秒
connection.setReadTimeout(5000); // 读取超时设置为5秒

3. 概要:
この記事では、Java ネットワーク接続のリダイレクト失敗例外 (RedirectFailureException) を解決する方法を紹介します。 URL の正当性を確認し、リダイレクト数の制限を増やし、リダイレクトされた URL を処理し、ネットワーク接続のタイムアウト設定を増やすことで、この異常を効果的に解決できます。この記事の内容が、読者が Java ネットワーク プログラミングで同様の問題に遭遇したときに役立つことを願っています。

ただし、上記は RedirectFailureException 例外を解決するための一般的な方法の一部にすぎず、具体的な解決策は実際の状況に応じて調整および変更する必要があります。この例外が発生した場合は、特定の問題に基づいてデバッグとトラブルシューティングを行い、問題の根本原因を見つけて適切な解決策を講じる必要があります。

参考資料:
[1] Java SE 11 API 仕様: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net / HttpURLConnection.html
[2] Java SE 11 API 仕様: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/URL.html

以上がJava ネットワーク接続リダイレクト失敗例外 (RedirectFailureException) を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。