お知らせ
2023.12.5(Tue)
目次
どうもこんにちは。三宮です。
今回は、外部サイトへ通信をしている際に302ステータスが発生した際の対処法を書いていきます。
私の場合、今までアクセス出来ていたサイトから、ある日を境に302ステータスがでて、後続処理で処理エラーとなってしまった、といったケースがありました。
302ステータスは「一時的なリダイレクト」が発生した状態になります。
一般的にブラウザから見た際は、URLに変わりがないため気づきづらいですが、Java等のプログラムからのアクセス時は、こちらのステータスが発生してしまいます。
対処法は至極シンプルで、ヘッダーのLocationにリダイレクト先のURLが格納されているので、そちらを抜いて再度リトライ処理を実装する・・・で解決します。
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はあまり見たことがないステータスだったので備忘のため残しました。まだまだ経験したことないステータスがあるので、エラーに遭遇した際はまた残していこうと思います。
それではまた。
《関連記事》