Détermination de l'URL de redirection en Java
Lors de l'accès à des pages Web à l'aide d'URLConnection, il est courant de rencontrer des redirections. Cela se produit lorsqu'une URL pointe vers une autre destination. Pour déterminer l'URL redirigée, nous devons comprendre comment fonctionnent les redirections HTTP.
En général, un serveur répond avec un code d'état 3xx (par exemple, 301, 302) indiquant une redirection. La réponse comprend un champ d'en-tête « Location » précisant la nouvelle destination. Cependant, l'URLConnection ne suit pas automatiquement les redirections.
Accès à l'URL redirigée
Pour obtenir l'URL redirigée, nous pouvons appeler manuellement getInputStream() sur l'URLConnection après la première étape. connexion. Cette action force l'établissement de la connexion, et le serveur envoie la réponse finale, incluant l'en-tête "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();
Accès à l'en-tête Location
Dans certains cas , nous souhaiterons peut-être accéder à l'en-tête "Location" avant de récupérer le contenu redirigé. Pour cela, nous pouvons utiliser HttpURLConnection et définir 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);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!