![](/img/trans.png)
[英]Spring - wrong encoding POST request with 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.