Verschlüsseln Sie eine URL in Java
-
Codieren einer URL mit
URLEncoder
in Java -
Codieren einer URL mit
URL
,URI
undtoASCIIString()
in Java -
Codieren einer URL mit
URIBuilder
in Java
URLs dürfen keine Zeichen enthalten, die nicht im ASCII-Zeichensatz enthalten sind. Wenn wir eine URL über das Internet senden möchten, können wir keine Zeichen wie Leerzeichen anhängen; Aus diesem Grund verwenden wir Codierung, um die ungültigen Zeichen durch gültige Zeichen wie das Pluszeichen oder das Prozentzeichen zu ersetzen. In den folgenden Beispielprogrammen sehen wir, wie Sie eine URL mit verschiedenen Methoden codieren.
Codieren einer URL mit URLEncoder
in Java
Die Utility-Klasse URLEncoder
hilft uns, eine gegebene URL in das Format application/x-www-form-urlencoded
zu kodieren. Unten nehmen wir eine Zeichenkette q
, die drei Wörter enthält, die durch Leerzeichen getrennt sind.
Wenn wir q
am Ende einer URL verketten, ist es eine ungültige URL, da eine gültige URL keine Leerzeichen enthält. Um dies zu beheben, codieren wir q
mit der Methode URLEncoder.encode()
, die zwei Argumente akzeptiert: Das erste ist der Abfragestring q
und das zweite ist der zu verwendende charset
.
Die Methode URLEncoder.encode()
gibt einen String zurück, den wir am Ende einer URL als Abfrage verketten. Wenn wir den letzten String encodedUrl
ausgeben, wird die gesamte gültige URL angezeigt, und ein Pluszeichen ersetzt die Leerzeichen.
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);
}
}
Ausgabe:
Encoded Url: www.google.com/search?q=learn+java+language
Codieren einer URL mit URL
, URI
und toASCIIString()
in Java
Die Klasse URL
in Java erstellt eine URL und stellt uns mehrere nützliche Methoden zur Verfügung, um Informationen über die URL zu erhalten. Wir erstellen die URL, die ein URL
-Objekt zurückgibt. Als nächstes rufen wir den Konstruktor der Klasse URI
auf und übergeben die URL-Informationen wie das Protokoll (https/http)
und die userinfo
mit der Methode getUserInfo()
, die Details zur Autorisierung enthält.
Nun holen wir uns den Host mit der Methode getHost()
und konvertieren ihn in das ASCII Compatible Encoding (ACE) von Unicode. Das nächste Argument ist der Port, der mit der Methode getPort()
abgerufen wurde, dann erhalten wir den Pfad der URI und die letzten beiden Argumente sind die Abfrage und die Referenz.
Sobald alle Argumente an den URI
-Konstruktor übergeben wurden, gibt dieser ein URI
-Objekt zurück. Dieses Objekt ist vom Typ URI
, das wir mit der Methode toASCIIString()
in einen ASCII-String konvertieren.
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();
}
}
}
Ausgabe:
Encoded Url: https://www.google.com/search?q=learn%20java%20language
Codieren einer URL mit URIBuilder
in Java
In diesem Beispiel verwenden wir die Apache HttpClient
-Bibliothek anstelle von nativen Methoden. Um die Bibliothek in unser Projekt aufzunehmen, verwenden wir die folgende Abhängigkeit.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
Wir verwenden die Klasse URIBuilder
des Pakets org.apache.http.client.utils
. Wir erstellen ein Objekt von URIBuilder
und übergeben die Klasse urlToEncode
in ihrem Konstruktor. Als nächstes fügen wir unsere Abfrage q
als Parameter mit der Methode uriBuilder.addParameter()
hinzu und übergeben den Abfrageparameter und seinen Wert.
Am Ende geben wir UriBuilder
als String aus, der die gesamte codierte URL anzeigt.
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();
}
}
}
Ausgabe:
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