小编Mat*_*son的帖子

如何使用Spring正确接收urlencoded表单主体

我刚刚开始使用Spring,我正在尝试在休息控制器中接收一个form-urlencoded的POST主体,但我不能让我的生活让它工作.这是我的"Hello World"-esque控制器:

@RestController
public class MyController {
    @ResponseBody
    @RequestMapping(
        value = "/",
        method = RequestMethod.POST,
        consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
        produces = MediaType.TEXT_PLAIN_VALUE
    )
    public String index(@RequestBody String text) {
        return "Text: " + text;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多不同的变体,都有不同的错误.当从Postman接收带有"text"参数的POST请求时,上面的特定配置会产生以下错误.

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.mywebsite.controllers.MyController.index(java.lang.String)
Run Code Online (Sandbox Code Playgroud)

我查看了许多关于此主题的其他stackoverflow帖子,并试图实现他们的各种解决方案无济于事.这是最有前途的列表:

  1. Spring JSON请求体未映射到Java POJO
    • 对我来说这是一个理想的结果,一个包含所有参数的POJO.但是,当我尝试这个时,无论我传入什么,所有POJO字段都是null.
  2. 如何在Spring MVC控制器中将Form数据作为Map获取?
    • 在该帖子上的第一个解决方案之后,使用MultiValueMap会产生与上面相同的错误.
    • 在第二个中,参数图每次都是空的.
  3. 如何在Spring Controller中检索FORM/POST参数?
    • 生成一张空地图,类似于上面的地图.

还有一些我再也找不到了,对于这些帖子中的大部分,我每次都尝试调整注释.当我尝试GET和JSON POST请求时,我取得了很大的成功,但由于某些原因,这些urlencoded请求拒绝工作.

java spring spring-mvc

5
推荐指数
1
解决办法
7284
查看次数

标签 统计

java ×1

spring ×1

spring-mvc ×1