在 Java 中確定重定向的 URL
使用 URLConnection 訪問網頁時,經常會遇到重定向。當 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中文網其他相關文章!