WebClient uri,如何处理 % 等特殊字符

问题描述

我在设置查询参数时遇到了 WebClient 的问题。这是代码

WebClient webClient = WebClient.create(config.getoAuth2Url());

        return webClient.post()
                .uri(uriBuilder -> uriBuilder
                        .path("/oauth/authorize")
                        .queryParam(RESPONSE_TYPE,request.getResponse_type())
                        .queryParam(CLIENT_ID,request.getClient_id())
                        .queryParam(REDIRECT_URI,request.getRedirect_uri()) // pay attention here
                        .build())
                .header("cookie",jSessionId)
                .acceptCharset(StandardCharsets.UTF_8)
                .retrieve()
                .toEntity(JsonNode.class)
                .block();

事情是这样的

request.getRedirect_uri()

一个包含 % 字符的字符串,如下所示:

https%3A%2F%2Fbra...

并且我收到 400 错误,因为 WebClient 在某些步骤中更改了此字符串:

https%253A%252F%252Fbra

当然,如果我尝试使用原始值进行 curl 会起作用,如果我尝试使用修改后的字符串进行 curl 会得到 400。如何更改 WebClient 行为使其不会修改我的 url?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)