如何在Spring Rest控制器中接收application/x-www-form-urlencoded请求参数

She*_*lva 5 java spring spring-mvc

我正在尝试编写一个接收 application/x-www-form-urlencoded 的休息端点。但端点不接受@RequestBody或@RequestParam的请求参数

我尝试使用 MultiValueMap 来获取请求参数。但我总是得到 0 个参数。有没有办法获取 MultiValueMap 或其他 POJO 类的请求值。

AD=&value=sometestvalue- 这是 application/x-www-form-urlencoded 请求主体。我正在尝试使用邮递员来完成请求

@RequestMapping(value = "/test/verification/pay/{id}", method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@ResponseBody
public Response testVerificationPay(@PathVariable("id") long id, @RequestParam MultiValueMap formData,
                                           HttpServletRequest servletRequest, ServiceContext serviceContext){
        log.info("!--REQUEST START--!"+formData.toString()); 
} 
Run Code Online (Sandbox Code Playgroud)

Mac*_*ski 0

您不要@RequestParam在 POST 请求中使用,因为数据不像 GET 请求那样位于 URL 中。

您应该使用@RequestBody( doc ) 并注册适当的HttpMessageConverter。最有可能你应该使用:FormHttpMessageConverter