gpt4 book ai didi

java - 如何将 Java 中的 URI 解析和解码为 URI 组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:14 26 4
gpt4 key购买 nike

我正在尝试找到一种方法来解析 URL、对其进行解码并以明确的方式返回解码后的组件。

URLDecoder不合适,因为它可能会返回不明确的字符串,例如

URLDecoder.decode("http://www.google.com?q=abc%26def", "UTF-8")

返回:

http://www.google.com?q=abc&def 

所以关于转义 & 的信息丢失了。

我想要这样的东西:

DecodedUrlComponents cmp = GreatURLDecoder.decode(url);
Map<String, List<String>> decodedQuery = cmp.getQuery();
decodedQuery.get("q").get(0); //returns "abc&def"

我该如何实现?

编辑:感谢您的回复,但我的问题有点不同:我想以明确的方式获得解码组件,因此以下都不是我需要的:

  • new URI("http://www.google.com?q=abc%26def").getRawQuery() 返回编码查询:q=abc%26def
  • new URI("http://www.google.com?q=abc%26def").getQuery() 返回不明确的值:q=abc&def
  • URLDecoder.decode("http://www.google.com?q=abc%26def", "UTF-8") 返回不明确的值:http://www .google.com?q=abc&def
  • org.springframework.web.util.UriComponentsBuilder.fromUriString("http://www.google.com?q=abc%26def").build(true).getQueryParams() -关闭,但仍然不是我想要的,因为它返回编码参数的映射:{q=[abc%26def]}

最佳答案

使用 spring 框架 (org.springframework.web.util),您可以执行以下操作:

URI uri = <your_uri_here>;
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUri(uri);
UriComponents uriComponents = uriComponentsBuilder.build();
String path = uriComponents.getPath();
MultiValueMap<String, String> queryParams = uriComponents.getQueryParams(); //etc.

关于java - 如何将 Java 中的 URI 解析和解码为 URI 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com