Heim >Java >javaLernprogramm >Wie analysiere ich einen URI-String in eine Name-Wert-Sammlung in Java?

Wie analysiere ich einen URI-String in eine Name-Wert-Sammlung in Java?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 22:05:11549Durchsuche

How to Parse a URI String into a Name-Value Collection in Java?

Parsen Sie einen URI-String in eine Name-Value-Sammlung

Aufgrund des Fehlens eines explizit definierten Java-Äquivalents zum HttpUtility von C#/.NET. ParseQueryString-Methode sind alternative Ansätze erforderlich, um URI-Zeichenfolgen in Name-Wert-Sammlungen zu analysieren. In dieser Antwort wird eine benutzerdefinierte Java-Implementierung untersucht, die diese Funktionalität erreicht.

Java-Code für die URI-Analyse

Der folgende Java-Code kann verwendet werden, um eine URI-Zeichenfolge in einen Namen aufzuteilen Sammlung von Wertpaaren:

public static Map<String, String> splitQuery(URL url) throws UnsupportedEncodingException {
    Map<String, String> query_pairs = new LinkedHashMap<>();
    String query = url.getQuery();
    String[] pairs = query.split("&");
    for (String pair : pairs) {
        int idx = pair.indexOf("=");
        query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
    }
    return query_pairs;
}

Verwendung und Beispiel

Diese Methode kann mit einer URL als Argument aufgerufen werden und gibt eine Map zurück, die die analysierten Name-Wert-Paare enthält. Verwenden Sie beispielsweise den in der Frage angegebenen URI:

URL url = new URL("https://google.com.ua/oauth/authorize?client_id=SS&response_type=code&scope=N_FULL&access_type=offline&redirect_uri=http://localhost/Callback");
Map<String, String> query_pairs = splitQuery(url);
System.out.println(query_pairs.get("client_id")); // prints "SS"

Diese Methode erleichtert den einfachen Zugriff auf die analysierten Werte durch Verwendung der Map-Schnittstelle. Es ist wichtig zu beachten, dass in dieser Methode die URL-Dekodierung implementiert ist, um die korrekte Verarbeitung codierter Zeichen im URI sicherzustellen.

Verbesserungen

Nachfolgende Aktualisierungen dieser Lösung haben behoben zusätzliche Anforderungen, wie z. B. die Handhabung mehrerer Parameter mit demselben Schlüssel und Parametern ohne Werte. Darüber hinaus wurde eine Java8-Version für diejenigen bereitgestellt, die neuere Java-Versionen verwenden.

Da diese Antwort große Popularität erlangt hat, wurde der bereitgestellte Java-Code kontinuierlich verfeinert, um einen robusteren und vielseitigeren Ansatz für das URI-Parsing zu bieten.

Das obige ist der detaillierte Inhalt vonWie analysiere ich einen URI-String in eine Name-Wert-Sammlung in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn