spring控制器用空格替换参数中的+字符

dgtucam1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(445)

我有一个控制器,需要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就可以用 + 保留字符?

o4tp2gmn

o4tp2gmn1#

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

相关问题