Maison >Java >javaDidacticiel >Comment analyser une chaîne URI dans une collection nom-valeur en Java ?

Comment analyser une chaîne URI dans une collection nom-valeur en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 22:05:11550parcourir

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

Analyser une chaîne URI dans une collection nom-valeur

En raison de l'absence d'équivalent Java explicitement défini au HttpUtility de C#/.NET. ParseQueryString, des approches alternatives sont nécessaires pour analyser les chaînes URI dans des collections nom-valeur. Cette réponse explore une implémentation Java personnalisée qui réalise cette fonctionnalité.

Code Java pour l'analyse d'URI

Le code Java suivant peut être utilisé pour diviser une chaîne URI en un nom -Collection de paires de valeurs :

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;
}

Utilisation et Exemple

Cette méthode peut être invoquée avec une URL comme argument et renvoie une carte contenant les paires nom-valeur analysées. Par exemple, en utilisant l'URI fourni dans la question :

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"

Cette méthode facilite l'accès aux valeurs analysées en utilisant l'interface Map. Il est important de noter que le décodage d'URL est implémenté dans cette méthode pour garantir une gestion correcte des caractères codés dans l'URI.

Améliorations

Les mises à jour ultérieures de cette solution ont résolu des exigences supplémentaires, telles que la gestion de plusieurs paramètres avec la même clé et des paramètres sans valeurs. De plus, une version Java8 a été fournie pour ceux qui utilisent des versions Java plus récentes.

Comme cette réponse a gagné en popularité, le code Java fourni a été continuellement affiné pour offrir une approche plus robuste et plus polyvalente de l'analyse des URI.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn