我试图找到一种方法来解析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> decodedQuery = cmp.getQuery();
decodedQuery.get("q").get(0); //returns "abc&def"
我该如何做到这一点?
编辑:
感谢您的回复,但我的问题有点不同:我希望以明确的方式获得已解码的组件,因此以下任何一项都不能满足我的需求:
>新URI(“http://www.google.com?q=abc\u0026def”).getRawQuery()返回编码查询:q = abc&def
>新URI(“http://www.google.com?q=abc\u0026def”).getQuery()返回不明确的值:q = abc& def
> URLDecoder.decode(“http://www.google.com?q=abc\u0026def”,“UTF-8”)返回不明确的值:http://www.google.com?q = abc& def
> org.springframework.web.util.UriComponentsBuilder.fromUriString(“http://www.google.com?q=abc\u0026def”).build(true).getQueryParams() – close,但仍然不是我想要的,因为它返回编码参数的映射:{q = [abc&def]}