Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.4K
Vistas
Error: falta el cuerpo de solicitud requerido

Estoy probando el marco de primavera. Tengo RestController y función:

 @RequestMapping(value="/changePass", method=RequestMethod.POST) public Message changePassword(@RequestBody String id, @RequestBody String oldPass, @RequestBody String newPass){ int index = Integer.parseInt(id); System.out.println(id+" "+oldPass+" "+newPass); return userService.changePassword(index, oldPass, newPass); }

y código angularJS

 $scope.changePass = function(){//changePass $scope.data = { id: $scope.userId, oldPass:$scope.currentPassword, newPass:$scope.newPassword } $http.post("http://localhost:8080/user/changePass/", $scope.data). success(function(data, status, headers, config){ if(date.state){ $scope.msg="Change password seccussful!"; } else { $scope.msg=date.msg; } }) .error(function(data, status, headers, config){ $scope.msg="TOO FAIL"; }); }

y cuando lo ejecuto.

Mensaje de error :

 Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.csc.mfs.messages.Message com.csc.mfs.controller.UserController.changePassword(java.lang.String,java.lang.String,java.lang.String)

Ayúdame a arreglarlo, por favor...

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El problema está en este código.

 @RequestBody String id, @RequestBody String oldPass, @RequestBody String newPass

No puede tener varios @RequestBody en el mismo método, ya que solo puede vincularse a un solo objeto (el cuerpo solo se puede consumir una vez).

ENFOQUE 1:

El remedio a ese problema crea un objeto que capturará todos los datos relevantes y luego crea los objetos que tienes en los argumentos.

Una forma para usted es tenerlos todos incrustados en un solo JSON como se muestra a continuación

 {id:"123", oldPass:"abc", newPass:"xyz"}

Y tenga su controlador como parámetro único como se muestra a continuación

 public Message changePassword(@RequestBody String jsonStr){ JSONObject jObject = new JSONObject(jsonStr); ....... }

ENFOQUE 2:

Cree una implementación personalizada propia para ArgumentResolver

over 4 years ago · Santiago Trujillo Denunciar

0

No puede tener un cuerpo de solicitud para el método GET. Si desea pasar el nombre de usuario y la contraseña como parte del cuerpo de la solicitud, cambie el tipo RequestMethod a POST/PUT.

Si desea usar GET solo, deberá pasar el nombre de usuario y la contraseña como variables de ruta o como parámetros de solicitud/consulta, lo cual no es una buena práctica.

Recomendaría cambiar RequestMethod y pasar el nombre de usuario y la contraseña como cuerpo de la solicitud.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda