Java ネットワーク接続の最大リダイレクト数を超える例外 (MaxRedirectsExceededException) を解決する方法
Java アプリケーションを開発する場合、他のアプリケーションとネットワーク接続する必要があることがよくあります。サーバーが通信します。ただし、場合によっては、MaxRedirectsExceededException という例外が発生することがあります。この例外は、ネットワーク接続がリダイレクトの最大数を超えたため、接続を続行できなくなったことを示します。
この例外は通常、ネットワーク接続に HttpURLConnection や HttpClient などのツールを使用するときに発生します。リクエストを送信すると、サーバーはリクエストを別の URL に再送信する必要があることを示すリダイレクト応答を返す場合があります。この場合、リダイレクトに従ってリクエストの送信を続けるか、リダイレクトに従っているのを停止して MaxRedirectsExceededException 例外をスローするかを選択できます。
それでは、この例外を解決するにはどうすればよいでしょうか?以下でいくつかの方法を見ていきます。
1 つの方法は、プログラムが引き続きリダイレクトを追跡できるように、リダイレクトの最大制限を増やすことです。次のコードを使用して、リダイレクトの最大数を設定できます:
HttpURLConnection.setFollowRedirects(true); System.setProperty("http.maxRedirects", "10"); // 设置最大重定向次数为10
これの利点は、接続がリダイレクトに従い続けることができることですが、回避するために適切なリダイレクトの最大数を設定するように注意してください。リダイレクトの無限ループに入ります。
別の方法は、次のリダイレクトを無効にして、MaxRedirectsExceededException 例外をスローすることです。次のコードを使用して、次のリダイレクトを無効にできます。
HttpURLConnection.setFollowRedirects(false);
これの利点は、プログラムがリダイレクトの無限ループに入らないことですが、リダイレクトを処理するロジックに注意を払う必要がある場合があります。リダイレクト応答を手動で処理します。
最後の方法は、ニーズに応じてリダイレクトを柔軟に処理するためにリダイレクト戦略をカスタマイズすることです。次のコードを使用してリダイレクト戦略をカスタマイズできます:
HttpClient client = new DefaultHttpClient(); client.setRedirectStrategy(new DefaultRedirectStrategy() { public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) { boolean redirected = super.isRedirected(request, response, context); if (!redirected) { int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == 301 || statusCode == 302) { return true; // 手动处理重定向 } } return redirected; } });
これの利点は、独自のニーズに応じてリダイレクトを柔軟に処理できることです。リダイレクトの追跡を続行するか、リダイレクトの追跡を停止してスローするかを選択できます。例外。
まとめると、リダイレクトの最大数を超える Java ネットワーク接続の例外 (MaxRedirectsExceededException) を解決する方法は、リダイレクトの最大数を増やす、後続のリダイレクトを禁止する、またはリダイレクト戦略をカスタマイズすることで実現できます。実際のニーズに基づいて適切なソリューションを選択し、プログラムが正常に動作するようにリダイレクトを処理するロジックに注意してください。
この記事が MaxRedirectsExceededException 例外の解決に役立つことを願っています。
以上がJava ネットワーク接続のリダイレクトの最大数を超える例外 (MaxRedirectsExceededException) を解決するメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。