Spring + HttpServletRequest + JSON

En la entrada de hoy veremos dos formas de acceder a la información JSON en un HttpServletRequest. La primera consiste en la lectura básica del buffer.

@RequestMapping(value="seeJsonFromBuffer")
public void verContenidoBufer(HttpServletRequest request) {
 StringBuilder sb = new StringBuilder();
 BufferedReader reader = null;
 try {
  reader = request.getReader();
 } catch (IOException e) {
  e.printStackTrace();
 }
 try {
  String line;
  try {
   while ((line = reader.readLine()) != null) {
    sb.append(line).append('\n');
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 } finally {
  try {
   reader.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 System.out.println("JSON: " + sb.toString());
}

Y la segunda es la que gracias a Spring nos simplifica todo el trabajo anterior a un simple parámetro de entrada que contiene ya la información JSON.

@RequestMapping(value = "seeJsonFromRequestBody", method=RequestMethod.POST)
@ResponseBody
public void seeJson(@RequestBody String jsonRecived,
HttpServletRequest request, HttpServletResponse response) {
  System.out.println("JSON: " + jsonRecived);
}

Para probar el funcionamiento de estos controladores podemos desde nuestra aplicación crear la petición o si no controlamos de script, la alternativa sencilla es utilizar un RESTCLIENT, por ejemplo el de Mozilla Firefox.

petición desde restclient de firefox con información json en el body

Petición a controlador seeJsonFromBuffer

 

RestClient_seeJsonFromRequestBody

Petición al controlador seeJsonFromRequestBody

En ambos casos la salida es la misma.

{“email”:”admin”, “password”:”123″}

 

 

  • Hugo Vázquez Andrés

    Me cae de maravilla, ando empezando en el desarrollo y estoy de suplente, como le haría para obtener cada dato del arreglo json, por ejemplo si quisiera hacer un if o algo similar para un login