var responseEntity =
webClient
.get()
.uri(
uriBuilder ->
uriBuilder
.path("myendpoint")
.queryParam("email", email)
.build())
.retrieve()
这段代码的问题在于,如果这里的电子邮件类似于my+gmail.com,则URI默认编码不会在queryParam中编码**+,如果我自己将字符串编码为适当的URI编码字符串:例如:my%2Bemail@gmail.com,在这种情况下,URI默认编码器也会对%符号进行编码。现在,如果我使用uriBuilder的.encode()函数,它也会对电子邮件中的@**进行编码。
我想实现URI,如:https://我的终点?电子邮件=我的%2邮箱gmail.com
有人能帮忙吗?谢谢。
2条答案
按热度按时间ig9co6j11#
可以通过以下方式示例化URI:
它不是很优雅,但它的工作。
kcwpcxri2#
UriComponentsBuilder的**build(boolean
encoded
)**函数中的param实际上定义了URI是否已经编码,并防止再次对参数进行双重编码,因此我们可以将编码后的电子邮件传递给param,并防止通过uriBuilder本身对该电子邮件运行任何编码。