Encoding 使用+;

Encoding 使用+;,encoding,parameters,uri,resttemplate,Encoding,Parameters,Uri,Resttemplate,我一直在努力正确地编码这样一个参数: filter=startDate eq "2020-08-21T00:00:00+04:30" filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22 https://example.com/object/id?filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22 所以它的编码是这样的: filter=start

我一直在努力正确地编码这样一个参数:

filter=startDate eq "2020-08-21T00:00:00+04:30"
filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
https://example.com/object/id?filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
所以它的编码是这样的:

filter=startDate eq "2020-08-21T00:00:00+04:30"
filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
https://example.com/object/id?filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
但我明白了:

filter=startDate%20eq%20%222020-08-21T00:00:00+4:30%22
这显然是错误的,我还需要对+符号进行编码

代码如下所示

UriComponentsBuilder builder;
URI uri;
uri = UriComponentsBuilder.fromUriString(uri).build(id);
builder = UriComponentsBuilder.fromUri(uri);

if (filter != null) {
  builder.queryParam("filter", filter);
}

builder.build(false).toUriString();
完整URL应如下所示:

filter=startDate eq "2020-08-21T00:00:00+04:30"
filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
https://example.com/object/id?filter=startDate%20eq%20%222020-08-21T00:00:00%2B04:30%22
尝试此解决方案时运气不佳:

有什么想法吗

更新: 看到了这个有希望的答案,但似乎无法实现。我尝试在扩展OAuth2RestTemplate的类中添加如下内容:

HttpClient httpClient =
        CustomHttpClientBuilder.create().setMaxConnTotal(5_000).setMaxConnPerRoute(2_500).build();
    // Allow to log the response body and also return it to the caller.
    setRequestFactory(
        new BufferingClientHttpRequestFactory(
            new HttpComponentsClientHttpRequestFactory(httpClient)));

<>但是代码从不执行。

这可能不是解决问题的方法,但可以考虑不同的编码。就像只保存从epoch开始的毫秒或秒。这样你就不会有任何+符号来编码了。你能详细说明你所说的“编码像”和“得到这个”是指谁吗。只需使用在线URL编码器进行检查。它可以编码和解码,没有任何问题,没有编码加符号。你的意思是REST模板错误地编码在这个特定的情况下,这可能不是你的问题的解决方案,但是你可以考虑不同的编码。就像只保存从epoch开始的毫秒或秒。这样你就不会有任何+符号来编码了。你能详细说明你所说的“编码像”和“得到这个”是指谁吗。只需使用在线URL编码器进行检查。它可以编码和解码,而不存在任何不编码加符号的问题。您的意思是RestTemplate编码错误吗?在这种特定情况下,是的