为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

偶然的你 2023-05-17 14:21:41
我正在尝试编写一个接收 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)@ResponseBodypublic Response testVerificationPay(@PathVariable("id") long id, @RequestParam MultiValueMap formData,                                           HttpServletRequest servletRequest, ServiceContext serviceContext){        log.info("!--REQUEST START--!"+formData.toString()); } 
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

你需要使用MultiValueMap<String, String>


@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<String, String> formData) {

        System.out.println("!--REQUEST START--!" + formData.toString());

        return null;

    }


查看完整回答
反对 回复 2023-05-17
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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



查看完整回答
反对 回复 2023-05-17
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您不要@RequestParam在 POST 请求中使用,因为数据不在 URL 中,而在 GET 请求中。

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


查看完整回答
反对 回复 2023-05-17
  • 3 回答
  • 0 关注
  • 274 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信