Spring rest controller中如何接收application/x-www-form-

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


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


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


@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()); 


偶然的你
浏览 275回答 3
3回答

慕侠2389804

你需要使用MultiValueMap<String, String>@RequestMapping(value = "/test/verification/pay/{id}", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)&nbsp; &nbsp; @ResponseBody&nbsp; &nbsp; public Response testVerificationPay(@PathVariable("id") long id, @RequestParam MultiValueMap<String, String> formData) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("!--REQUEST START--!" + formData.toString());&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }

杨__羊羊

尝试@ResponseBody。然后,更改为 a&nbsp;String,而不是 a&nbsp;MultiValueMap,以查看正文是否包含在请求中。

呼唤远方

您不要@RequestParam在 POST 请求中使用,因为数据不在 URL 中,而在 GET 请求中。您应该使用@RequestBody( doc ) 并注册适当的HttpMessageConverter。您很可能应该使用:FormHttpMessageConverter
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java