我试图在 Spring boot 中从一个用 html 制作的帖子接收,但是在 java 中,当我使用 @RequestBody 时,变量是空的。我尝试了不同的方法,但我无法收到帖子的正文。
我试过 @RequestParam
有了那些@,我收到错误不支持的媒体类型
@RequestBody MultiValueMap
这是我的代码
前面我有这个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form id="diagnosticoForm2" action="http://devlocal1.mx.att.com:7003/pruebaRequest?param1=123" method="POST">
<input type="text" name="requestBody" id="requestBody">
<input type="submit" name="enviar" value="enviar"/>
</form>
</body>
</html>
在后面我有这个
@POST
@Path(value = "/pruebaRequest")
@Consumes("application/x-www-form-urlencoded")
public Response pruebaRequest(@QueryParam("param1") String param1, @RequestBody String requestBody
) throws JsonProcessingException, URISyntaxException, UnsupportedEncodingException {
System.out.println("Param 1: ".concat(param1));
System.out.println("Request Body: ".concat(requestBody));
.
.
.
.
println的结果
参数 1:123
请求正文:
我的 json 请求:{"codigo": "10", "mensaje": "Error en el api"}
我想在 Spring boot 中接收 body
“application/x-www-form-urlencoded”表示请求体中的数据是URL编码的表单数据,不是JSON格式的数据。所以@RequestBody注解不能用来接收请求体中的数据
如果你想接收URL编码的表单数据,你应该使用@FormParam注解而不是@RequestBody注解。修改代码如下:
@POST
@Path(value = "/pruebaRequest")
@Consumes("application/x-www-form-urlencoded")
public Response pruebaRequest(@QueryParam("param1") String param1, @FormParam("requestBody") String requestBody
) throws JsonProcessingException, URISyntaxException, UnsupportedEncodingException {
System.out.println("Param 1: ".concat(param1));
System.out.println("Request Body: ".concat(requestBody));
}