Java でリダイレクトされる URL を決定する
URLConnection を使用して Web ページにアクセスすると、リダイレクトが発生するのが一般的です。これは、URL が別の宛先を指している場合に発生します。リダイレクトされた URL を特定するには、HTTP リダイレクトがどのように機能するかを理解する必要があります。
通常、サーバーはリダイレクトを示す 3xx ステータス コード (例: 301、302) で応答します。応答には、新しい宛先を指定する「Location」ヘッダー フィールドが含まれます。ただし、URLConnection は自動的にリダイレクトに従いません。
リダイレクトされた URL へのアクセス
リダイレクトされた URL を取得するには、最初の URLConnection の後に getInputStream() を手動で呼び出します。繋がり。このアクションにより接続が強制的に確立され、サーバーは「Location」ヘッダーを含む最終応答を送信します。
URLConnection con = new URL(url).openConnection(); con.connect(); System.out.println("Original URL: " + con.getURL()); InputStream is = con.getInputStream(); System.out.println("Redirected URL: " + con.getURL()); is.close();
Location ヘッダーへのアクセス
場合によっては、リダイレクトされたコンテンツを取得する前に、「Location」ヘッダーにアクセスしたい場合があります。この目的のために、HttpURLConnection を使用し、setInstanceFollowRedirects(false):
HttpURLConnection con = (HttpURLConnection) (new URL(url).openConnection()); con.setInstanceFollowRedirects(false); con.connect(); System.out.println("Response code: " + con.getResponseCode()); String location = con.getHeaderField("Location"); System.out.println("Location header: " + location);
以上がJavaでリダイレクトされたURLを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。