0

我有一个带有 2 个参数的控制器 -

@PostMapping(value = "/myEndPoint")
public ResponseEntity<StreamingResponseBody> process(final InputStream data,
                                                               @RequestParam final String param1,
                                                               @RequestParam final String base64Param)  {
    return ok().body(doSomething(base64Param.getBytes(), param1, data));
}

base64Param 字符串参数将包含+字符,但 Spring 控制器当然会用空格替换这些字符。

你知道我怎样才能解决这个问题并告诉控制器不要管+角色吗?

更新 - 我试过

UriComponentsBuilder builder = fromUriString(format("http://localhost:%s/%s", serverPort, "/myEndPoint"))
            .queryParam("param1", param1)
            .queryParam("base64Param", Base64.getUrlEncoder().encodeToString(base64ParamValueWithPluses.getBytes()));

但我必须像这样在我的控制器中解码 base64Param 参数 -

String decodedBaseParam64 = Base64.getUrlDecoder().decode(encodeBaseParam64);

有没有办法对此进行编码,以便 Spring 会使用+保留的字符自动对其进行解码?

4

1 回答 1

0
URI uri = fromUriString(format("http://localhost:%s/%s", serverPort, "/myEndPoint"))
            .queryParam("param1", param1)
            .queryParam("base64Param", "{base64Param}")
            .build(base64Param);

来源 - https://github.com/spring-projects/spring-framework/issues/21577

于 2021-01-21T19:47:22.693 回答