将 URI 字符串解析为其组成元素是 Web 开发中的一项常见任务。为了完成此任务,Java 提供了多种内置功能和外部库。本文重点介绍基于 Java 的解决方案,用于在不使用外部依赖项的情况下解析 URI 字符串。
URI 的查询部分包含一系列由'&' 特点。要将这些参数解析为映射,可以使用以下方法:
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; }
使用给定的 URL 作为示例:
https://google.com.ua/oauth/authorize?client_id=SS&response_type=code&scope=N_FULL&access_type=offline&redirect_uri=http://localhost/Callback
The splitQuery 方法将返回以下映射:
{client_id=SS, response_type=code, scope=N_FULL, access_type=offline, redirect_uri=http://localhost/Callback}
该方法包括 URL 解码,以处理参数值中存在的任何特殊字符。
已提供该方法的更新版本处理多个参数具有相同键的情况。此版本使用 Map
还提供了该方法的 Java 8 实现,它利用 lambda 表达式和流来提供简洁高效的解决方案。
通过使用 splitQuery 方法,您可以轻松地将 URI 查询字符串解析为其组成的名称-值对,而无需依赖外部图书馆。此功能对于各种 Web 开发任务至关重要,例如提取用户输入或从 RESTful 端点检索参数。
以上是如何在没有外部库的情况下在 Java 中将 URI 查询字符串解析为名称-值对?的详细内容。更多信息请关注PHP中文网其他相关文章!