首页 >Java >java教程 >如何在 Java 中从 URI 查询字符串中提取名称-值对?

如何在 Java 中从 URI 查询字符串中提取名称-值对?

DDD
DDD原创
2024-12-26 22:35:13868浏览

How to Extract Name-Value Pairs from a URI Query String in Java?

使用 Java 从 URI 中提取嵌入数据

将 URI 字符串解析为其相应的名称-值对是许多 Web 开发中的常见任务场景。在 Java 中,您可以通过应用简单的方法来实现此操作,而无需依赖外部库。

分步指南:

  1. 分割 URI 查询字符串:
    使用 URL.getQuery() 方法,获取 URI 查询字符串部分URI。查询字符串是问号(?)后面的部分,包含由与号(&)字符分隔的键值对。
  2. 单独的键值对:
    拆分使用 String.split("&") 方法将查询字符串分解为单独的键值对。
  3. 解析键值对:
    对于每个键值对,找到等号 (=) 以将键与值分开。使用合适的编码对键和值进行解码,例如 URLDecoder.decode()。
  4. 构造名称-值集合:
    创建一个映射数据结构来存储解析后的键-值对。

示例实现:

下面的 Java 代码演示了如何实现上述步骤:

import java.net.URL;
import java.net.URLDecoder;
import java.util.LinkedHashMap;
import java.util.Map;

public class ParseUriQuery {

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

}

示例用法:

解析您问题中提供的 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> queryPairs = ParseUriQuery.splitQuery(url);

// Access parsed elements
String clientId = queryPairs.get("client_id"); // Returns "SS"

此方法提供了在 Java 中提取嵌入在 URI 查询字符串中的信息的便捷且通用的方法。

以上是如何在 Java 中从 URI 查询字符串中提取名称-值对?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn