【エラー解決方法】JavaでHTTPステータス302が起きた際の対処法

どうもこんにちは。三宮です。
 
今回は、外部サイトへ通信をしている際に302ステータスが発生した際の対処法を書いていきます。
 

HTTPステータス302とは

私の場合、今までアクセス出来ていたサイトから、ある日を境に302ステータスがでて、後続処理で処理エラーとなってしまった、といったケースがありました。

302ステータスは「一時的なリダイレクト」が発生した状態になります。

一般的にブラウザから見た際は、URLに変わりがないため気づきづらいですが、Java等のプログラムからのアクセス時は、こちらのステータスが発生してしまいます。

対処法

対処法は至極シンプルで、ヘッダーのLocationにリダイレクト先のURLが格納されているので、そちらを抜いて再度リトライ処理を実装する・・・で解決します。

Javaサンプルコード

public class HttpSample {

  public void execute() {
    try {
      // URLに接続
      URL url = new URL("https://sample");
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      connection.setInstanceFollowRedirects(false);
      // ヘッダーのLocationを取得(リダイレクト先のURL)
      String locationUrl= connection .getHeaderField("Location");
      connection.disconnect();

      // Locationから取得したURLへ再接続
      URL newUrl = new URL(locationUrl);
      InputStreamReader in = new InputStreamReader(newUrl.openStream());

   //========================================
      // 以降後続処理
   //========================================

    } catch (Exception e) {
      // エラー処理
    }
  }
}

最後に

HTTPステータスの調査はよくやりますが、302はあまり見たことがないステータスだったので備忘のため残しました。まだまだ経験したことないステータスがあるので、エラーに遭遇した際はまた残していこうと思います。

それではまた。
 
 
 
 
《関連記事》

chmodコマンド
技術
2022.6.15(Wed)

【エラー解決方法】Java8のHttpClientを使ってPatchで送信した際に405エラーが発生

#プログラム#Java

技術
2019.4.23(Tue)

【エラー解決方法】SSLExceptionが発生!? を解決する方法

#プログラム#Java

技術
2017.2.14(Tue)

【エラー解決方法】バッチ処理実行時にSSLExceptionが発生!?を解決する方法

#プログラム#Java

記事をシェア
MOST VIEWED ARTICLES