@RequestBody 在带有 post html 的 spring boot 中不工作

问题描述 投票:0回答:1

我试图在 Spring boot 中从一个用 html 制作的帖子接收,但是在 java 中,当我使用 @RequestBody 时,变量是空的。我尝试了不同的方法,但我无法收到帖子的正文。

我试过 @RequestParam

有了那些@,我收到错误不支持的媒体类型 @RequestBody MultiValueMap @RequestParam 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

java html spring-boot post
1个回答
0
投票

“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));
}
© www.soinside.com 2019 - 2024. All rights reserved.