How to Identify the Redirected URL in Java
In Java, the URLConnection class offers a convenient method for establishing connections with remote URLs. However, in scenarios involving URL redirection, the retrieved URL may not be the final destination. Determining the actual redirected URL poses a challenge. This article discusses a solution to address this issue.
When accessing URLs through URLConnection, it is possible that the server sends an intermediate response with a Location header field indicating the redirected URL. However, the openConnection() method does not capture this intermediate response.
Utilizing the getInputStream() Method
To capture the redirected URL, the getInputStream() method can be utilized. This method initiates the connection process and follows any HTTP redirects. Consequently, the URLConnection instance now holds the information about the redirected URL.
To illustrate, the following code snippet demonstrates how to retrieve the redirected URL:
URLConnection con = new URL(url).openConnection(); System.out.println("Original URL: " + con.getURL()); con.connect(); System.out.println("Connected URL: " + con.getURL()); InputStream is = con.getInputStream(); System.out.println("Redirected URL: " + con.getURL()); is.close();
Checking for Redirection Prior to Content Retrieval
In certain scenarios, it may be necessary to determine whether a redirection has occurred before fetching the content at the redirected URL. The following code snippet illustrates this approach:
HttpURLConnection con = (HttpURLConnection)(new URL(url).openConnection()); con.setInstanceFollowRedirects(false); con.connect(); int responseCode = con.getResponseCode(); System.out.println("Response code: " + responseCode); String location = con.getHeaderField("Location"); System.out.println("Redirected to: " + location);
The above is the detailed content of How to Retrieve the Redirected URL When Using URLConnection in Java?. For more information, please follow other related articles on the PHP Chinese website!