Comment identifier l'URL redirigée en Java
En Java, la classe URLConnection offre une méthode pratique pour établir des connexions avec des URL distantes. Toutefois, dans les scénarios impliquant la redirection d'URL, l'URL récupérée peut ne pas être la destination finale. Déterminer l’URL redirigée réelle pose un défi. Cet article présente une solution pour résoudre ce problème.
Lors de l'accès aux URL via URLConnection, il est possible que le serveur envoie une réponse intermédiaire avec un champ d'en-tête Location indiquant l'URL redirigée. Cependant, la méthode openConnection() ne capture pas cette réponse intermédiaire.
Utilisation de la méthode getInputStream()
Pour capturer l'URL redirigée, la méthode getInputStream() peut être utilisé. Cette méthode lance le processus de connexion et suit toutes les redirections HTTP. Par conséquent, l'instance URLConnection contient désormais les informations sur l'URL redirigée.
À titre d'illustration, l'extrait de code suivant montre comment récupérer l'URL redirigée :
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();
Vérification de la redirection Avant la récupération de contenu
Dans certains scénarios, il peut être nécessaire de déterminer si une redirection a eu lieu avant de récupérer le contenu à l'URL redirigée. L'extrait de code suivant illustre cette approche :
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);
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!