Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.4K
Views
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...

about 4 years ago · Santiago Trujillo
2 answers
Answer question

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

about 4 years ago · Santiago Trujillo Report

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.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!