美文网首页
SpringBoot接收不到post过来的参数

SpringBoot接收不到post过来的参数

作者: dongzhensong | 来源:发表于2020-03-29 21:57 被阅读0次

首先介绍下POST请求常用的四种内容类型(Content-Type)
1.application/x-www-form-urlencoded
浏览器的原生 <form> 表单,其中ajax也是用这种方式提交的
2.multipart/form-data
表单上传文件用的这种提交方式
3.application/json
这种提交方式的消息主体是一个json字符串
text/xml
4.消息主体是XML格式的内容

可通过调试查看使用的方式:


image.png

这种情况下, 需改造boot接收参数的方式:

  1. 组装RequestBody, 新增一个类, 定义传递过来的参数:
package com.example.mgr.entity;

public class AdminRB {
    private String username;
    private String password;
    private String vericode;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getVericode() {
        return vericode;
    }

    public void setVericode(String vericode) {
        this.vericode = vericode;
    }
}

然后在方法定义中接收传参:

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
public Map login(@RequestBody AdminRB adminRB){
        return authService.login(null,adminRB.getUsername(), adminRB.getPassword(),adminRB.getVericode());
    }

测试实例:


image.png

2.改用流的方式读取[未使用]
首先导入需要的包:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.28</version>
</dependency>

实例

    @RequestMapping(value = "/demo",method = RequestMethod.POST)
    public String demo(HttpServletRequest req){
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(req.getInputStream()));
            StringBuffer sb=new StringBuffer();
            String s=null;
            while((s=br.readLine())!=null){
                sb.append(s);
            }
            JSONObject jsonObject = JSONObject.parseObject(sb.toString());
            String name = jsonObject.getString("name");
            String age = jsonObject.getString("age");
            System.out.println("name:"+name+" age:"+age);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "server response";
    }
————————————————
版权声明:本文为CSDN博主「芊雨_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/li3455277925/article/details/88933221

相关文章

网友评论

      本文标题:SpringBoot接收不到post过来的参数

      本文链接:https://www.haomeiwen.com/subject/ngrpuhtx.html