java - Spring / Angular 7 POST方法请求参数为空
问题描述
我想使用 POST 从前端向后端发送数据(以 json 形式),但请求参数为空。
角度:
this.http.post('api/example', { mydata: JSON.stringify(data) },
{ "headers": { header: "text/html;charset=UTF-8" } }).subscribe(Response => console.log(Response);
});
JSON.stringify(data) 看起来像这样:
[
["num1","num2","num3","num4","num5", "num6"],
["test6","test2","test1","test5","test4", "test3"]
]
这只是一个例子,数据将是动态的,所以有时我会有更多或更少的列和行。
弹簧后端:
@RequestMapping(value = "/api/example", method = RequestMethod.POST)
public @ResponseBody void postExample(HttpServletRequest request, HttpServletResponse response)
throws IOException {
HttpSession session = request.getSession();
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
String mydata = request.getParameter("mydata");
System.out.println(mydata);
...
}
mydata 为空,当我打印出来时。我不知道为什么。我尝试了什么:
- 将“text/html”更改为“application/json”和“application/*”和“text/plain”(并希望在后端将文本转换为 json,但仍为 null 参数)
我想使用“getParameter”而不是使用@RequestBody 注释。
如何从前端获取 json 数据并在后端使用它?
编辑:最初我不想使用@RequestBody,但是如果我想使用它,我该如何使用它来获取这些json数组?
解决方案
您需要使用 .getReader(),而不是 .getParameter() 方法,因为您需要检索请求的主体而不是某些参数。
推荐阅读
- javascript - 程序忽略异步模式
- faunadb - 如何按创建的时间戳搜索和排序动物区系数据库
- java - Socket.close 卡住了 15 分钟
- c# - 通过 key -updated 查找键值对列表的索引
- node.js - 如何解决发布请求失败 ReactJS 和 ExpressJS
- javascript - 检查对象数组范围内的日期
- azure - 是否可以在事件发生时自动将所有用户从 Azure Active Directory 转移到另一个域数据库?
- mongodb - 查找嵌套数组至少包含两个特定子文档的所有文档
- virtual-machine - VirtualBox没有IP地址使用内部网络
- java - 重命名DLL函数?