繁体   English   中英

Spring application/x-www-form-urlencoded 防止字符串编码

[英]Spring application/x-www-form-urlencoded prevent encoding of string

我们有一个@PostMapping ,它是一个提供给第三方的网络@PostMapping ,每当第三方发生事件时都会调用它。

@PostMapping(path = "/some-api", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public void proessWebhook(@RequestBody String request) {

请求字符串键在String request中编码。 对于我们的内部需求,我们需要在 spring 将其设置为String request变量时不要对密钥进行预编码。 我们尝试对变量进行 URL 解码,但是,问题是存在我们不想解码的值,因此解码整个字符串会解码键和值。

例如,如果在 CURL 请求中输入是some key=some%20value ,则请求变量将设置为some%20key=some%20value 而我们只需要解码密钥。

最重要的是,参数的顺序也随着输入而变化,顺序相同很重要。

我们该怎么做呢?

如果您的方法参数是 MultiValueMap 类型,您可以使用 @RequestParam 或 @RequestBody 注释将其与 HTTP 请求的正文适当地绑定。

@PostMapping(
path = "/some-api",
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public ResponseEntity<String> funName(
@RequestParam MultiValueMap<String,String> paramMap) throws Exception {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM