Spring 控制器用空格替换参数中的 + 字符
Spring Controller replacing + character in parameter with whitespace
我有一个带有 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 可以使用保留的 +
个字符自动对其进行解码?
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
我有一个带有 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 可以使用保留的 +
个字符自动对其进行解码?
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