Verschlüsseln Sie eine URL in Java

Rupam Yadav 12 Oktober 2023
  1. Codieren einer URL mit URLEncoder in Java
  2. Codieren einer URL mit URL, URI und toASCIIString() in Java
  3. Codieren einer URL mit URIBuilder in Java
Verschlüsseln Sie eine URL 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 Yadav avatar Rupam Yadav avatar

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