Maison >Java >javaDidacticiel >Comment analyser une chaîne URI dans une collection nom-valeur en 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!