Codifica un URL in Java
-
Codifica un URL utilizzando
URLEncoder
in Java -
Codifica un URL utilizzando
URL
,URI
etoASCIIString()
in Java -
Codifica un URL utilizzando
URIBuilder
in Java
Gli URL non possono contenere caratteri non inclusi nel set di caratteri ASCII. Quando vogliamo inviare un URL su Internet, non possiamo aggiungere caratteri come spazi bianchi; questo è il motivo per cui utilizziamo la codifica per sostituire i caratteri non validi con caratteri validi come il segno più o il segno di percentuale. Nei programmi di esempio seguenti, vedremo come codificare un URL utilizzando metodi diversi.
Codifica un URL utilizzando URLEncoder
in Java
La classe di utilità URLEncoder
ci aiuta a codificare un determinato URL nel formato application/x-www-form-urlencoded
. Di seguito, prendiamo una stringa q
che contiene tre parole, separate da spazi.
Se concateniamo q
alla fine di un URL, sarà un URL non valido poiché un URL valido non contiene spazi. Per risolvere questo problema, codifichiamo q
utilizzando il metodo URLEncoder.encode()
che accetta due argomenti: il primo è la stringa di query q
, e il secondo è il charset
da utilizzare.
Il metodo URLEncoder.encode()
restituisce una stringa che concateniamo alla fine di un URL come query. Quando stampiamo la stringa finale encodedUrl
, mostra l’intero URL valido e un segno più sostituisce gli spazi bianchi.
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);
}
}
Produzione:
Encoded Url: www.google.com/search?q=learn+java+language
Codifica un URL utilizzando URL
, URI
e toASCIIString()
in Java
La classe URL
in Java costruisce un URL e ci fornisce diversi metodi utili per ottenere informazioni sull’URL. Creiamo l’URL che restituisce un oggetto URL
. Successivamente, chiamiamo il costruttore della classe URI
e passiamo le informazioni dell’URL come il protocollo (https/http)
e userinfo
utilizzando il metodo getUserInfo()
che contiene i dettagli dell’autorizzazione.
Ora, otteniamo l’host utilizzando il metodo getHost()
e lo convertiamo nella codifica compatibile ASCII (ACE) da Unicode. L’argomento successivo è la porta recuperata utilizzando il metodo getPort()
, quindi otteniamo il percorso dell’URI e gli ultimi due argomenti sono la query e il riferimento.
Una volta passati tutti gli argomenti nel costruttore URI
, restituisce un oggetto URI
. Questo oggetto è del tipo URI
che convertiamo in una stringa ASCII utilizzando il metodo 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();
}
}
}
Produzione:
Encoded Url: https://www.google.com/search?q=learn%20java%20language
Codifica un URL utilizzando URIBuilder
in Java
In questo esempio, utilizziamo la libreria Apache HttpClient
invece dei metodi nativi. Per includere la libreria nel nostro progetto, utilizzeremo la seguente dipendenza.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
Usiamo la classe URIBuilder
del pacchetto org.apache.http.client.utils
. Creiamo un oggetto di URIBuilder
e passiamo la classe urlToEncode
nel suo costruttore. Successivamente, aggiungiamo la nostra query q
come parametro utilizzando il metodo uriBuilder.addParameter()
e passiamo il parametro query e il suo valore.
Alla fine, stampiamo UriBuilder
come una stringa che mostra l’intero URL codificato.
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();
}
}
}
Produzione:
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