Encoder une URL en Java
-
Encoder une URL en utilisant
URLEncoder
en Java -
Encoder une URL en utilisant
URL
,URI
ettoASCIIString()
en Java -
Encoder une URL en utilisant
URIBuilder
en Java
Les URL ne peuvent pas contenir de caractères qui ne sont pas inclus dans le jeu de caractères ASCII. Lorsque nous voulons envoyer une URL sur Internet, nous ne pouvons pas ajouter de caractères comme des espaces ; c’est pourquoi nous utilisons l’encodage pour remplacer les caractères invalides par des caractères valides comme le signe plus ou le signe pourcentage. Dans les exemples de programmes ci-dessous, nous verrons comment encoder une URL en utilisant différentes méthodes.
Encoder une URL en utilisant URLEncoder
en Java
La classe utilitaire URLEncoder
nous aide à encoder une URL donnée au format application/x-www-form-urlencoded
. Ci-dessous, nous prenons une chaîne q
qui contient trois mots, séparés par des espaces.
Si nous concaténons q
à la fin d’une URL, ce sera une URL invalide car une URL valide ne contient pas d’espaces. Pour résoudre ce problème, nous encodons q
à l’aide de la méthode URLEncoder.encode()
qui accepte deux arguments : le premier est la chaîne de requête q
et le second est le charset
à utiliser.
La méthode URLEncoder.encode()
renvoie une chaîne que nous concaténons à la fin d’une URL sous forme de requête. Lorsque nous imprimons la chaîne finale encodedUrl
, elle affiche l’intégralité de l’URL valide et un signe plus remplace les espaces.
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class EncodeUrl {
public static void main(String[] args) {
String q = "learn java language";
String encodedUrl = "www.google.com/search?q=" + URLEncoder.encode(q, StandardCharsets.UTF_8);
System.out.println("Encoded Url: " + encodedUrl);
}
}
Production:
Encoded Url: www.google.com/search?q=learn+java+language
Encoder une URL en utilisant URL
, URI
et toASCIIString()
en Java
La classe URL
en Java construit une URL et nous fournit plusieurs méthodes utiles pour obtenir des informations sur l’URL. Nous créons l’URL qui renvoie un objet URL
. Ensuite, nous appelons le constructeur de la classe URI
et passons les informations de l’URL comme le protocole (https/http)
et le userinfo
en utilisant la méthode getUserInfo()
qui contient les détails de l’autorisation.
Maintenant, nous obtenons l’hôte à l’aide de la méthode getHost()
et le convertissons en codage compatible ASCII (ACE) à partir d’Unicode. L’argument suivant est le port récupéré à l’aide de la méthode getPort()
, puis nous obtenons le chemin de l’URI, et les deux derniers arguments sont la requête et la référence.
Une fois tous les arguments passés dans le constructeur URI
, il renvoie un objet URI
. Cet objet est de type URI
que l’on convertit en chaîne ASCII à l’aide de la méthode toASCIIString()
.
import java.net.*;
public class EncodeUrl {
public static void main(String[] args) throws MalformedURLException {
String q = "learn java language";
URL urlToEncode = new URL("https://www.google.com/search?q=" + q);
try {
URI uri = new URI(urlToEncode.getProtocol(), urlToEncode.getUserInfo(),
IDN.toASCII(urlToEncode.getHost()), urlToEncode.getPort(), urlToEncode.getPath(),
urlToEncode.getQuery(), urlToEncode.getRef());
String finalEncodedUrl = uri.toASCIIString();
System.out.println("Encoded Url: " + finalEncodedUrl);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
Production:
Encoded Url: https://www.google.com/search?q=learn%20java%20language
Encoder une URL en utilisant URIBuilder
en Java
Dans cet exemple, nous utilisons la bibliothèque Apache HttpClient
à la place des méthodes natives. Pour inclure la bibliothèque dans notre projet, nous utiliserons la dépendance suivante.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
Nous utilisons la classe URIBuilder
du package org.apache.http.client.utils
. On crée un objet de URIBuilder
et on passe la classe urlToEncode
dans son constructeur. Ensuite, nous ajoutons notre requête q
en tant que paramètre à l’aide de la méthode uriBuilder.addParameter()
et passons le paramètre de la requête et sa valeur.
À la fin, nous imprimons UriBuilder
sous forme de chaîne qui affiche l’intégralité de l’URL encodée.
import java.net.*;
import org.apache.http.client.utils.URIBuilder;
public class EncodeUrl {
public static void main(String[] args) throws MalformedURLException {
String q = "learn java language";
String urlToEncode = "https://www.google.com/search";
try {
URIBuilder uriBuilder = new URIBuilder(urlToEncode);
uriBuilder.addParameter("q", q);
System.out.println("Encoded Url: " + uriBuilder.toString());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
Production:
Encoded Url: https://www.google.com/search?q=learn+java+language
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn