お知らせ
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はあまり見たことがないステータスだったので備忘のため残しました。まだまだ経験したことないステータスがあるので、エラーに遭遇した際はまた残していこうと思います。
それではまた。
《関連記事》