UriComponentsBuilder
的行为。我想使用它来在查询参数中编码URL,但是它似乎只转义%
字符,而不是其他必要的字符,例如&
。以下是一个未编码的查询参数中的URL示例:
UriComponentsBuilder.fromUri("http://example.com/endpoint")
.queryParam("query", "/path?foo=foo&bar=bar")
.build();
输出结果: http://example.com/endpoint?query=/path%3Ffoo=foo%26bar=bar
这个不正确,因为未编码的&
导致bar=bar
被解释为/endpoint
的查询参数,而不是/path
的查询参数。
但是,如果我使用一个包含%
字符的输入:
UriComponentsBuilder.fromUri("http://example.com/endpoint")
.queryParam("query", "/path?foo=%20bar")
.build();
输出:http://example.com/endpoint?query=/path?foo=%2520bar
字符%
已经被转义。
似乎不太一致,UriComponentsBuilder
自动转义了%
字符,但是没有转义其他的保留字符。
使用UriComponentsBuilder
将URL编码为查询参数的正确过程是什么?
&
是URL中的有效字符。除了某些特定字符外,其他所有内容都必须进行URL编码。 - amdg