首先介绍下POST请求常用的四种内容类型(Content-Type)
1.application/x-www-form-urlencoded
浏览器的原生 <form> 表单,其中ajax也是用这种方式提交的
2.multipart/form-data
表单上传文件用的这种提交方式
3.application/json
这种提交方式的消息主体是一个json字符串
text/xml
4.消息主体是XML格式的内容
可通过调试查看使用的方式:
![](https://img.haomeiwen.com/i2206137/368f12ea59b47dfc.png)
这种情况下, 需改造boot接收参数的方式:
- 组装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());
}
测试实例:
![](https://img.haomeiwen.com/i2206137/cf6d4f06634b9489.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
网友评论