Maison  >  Article  >  Java  >  Comment récupérer l'URL redirigée lors de l'utilisation d'URLConnection en Java ?

Comment récupérer l'URL redirigée lors de l'utilisation d'URLConnection en Java ?

DDD
DDDoriginal
2024-11-06 18:22:03947parcourir

How to Retrieve the Redirected URL When Using URLConnection in Java?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn