2012-09-27 19 views
6

Estoy buscando una forma de acceder directamente al cuerpo de la solicitud HTTP. De hecho, en mi código recibo diferentes parámetros en el cuerpo y no sé de antemano exactamente lo que recibiré. Además, quiero ser lo más flexible posible: estoy tratando con diferentes solicitudes que pueden variar y quiero manejarlas en un único método para cada tipo de solicitud (GET, POST, ...). ¿Hay alguna manera de manejar este nivel de flexibilidad con RESTEasy? ¿Debería cambiar a otra cosa?Cómo acceder al cuerpo de la solicitud HTTP con RESTEasy

+0

He intentado usar MessageBodyReaderInterceptor, pero ni siquiera estoy seguro de que esté hecho para hacer lo que quiero. Por lo que sé, generalmente con RESTEasy escribes métodos que aceptan un POJO o varios parámetros, pero no los conozco, así que no puedo especificarlos ... – Raffo

Respuesta

5

Según el código proporcionado en this answer, puede acceder al objeto HTTPServletRequest.

Una vez que tenga el objeto HTTPServletRequest, podrá acceder al cuerpo de la solicitud de la forma habitual. Un ejemplo puede ser:

String requestBody = ""; 
StringBuilder stringBuilder = new StringBuilder(); 
BufferedReader bufferedReader = null; 
try { 
    InputStream inputStream = request.getInputStream(); 
    if (inputStream != null) { 
     bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     char[] charBuffer = new char[128]; 
     int bytesRead = -1; 
     while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { 
      stringBuilder.append(charBuffer, 0, bytesRead); 
     } 
    } else { 
     stringBuilder.append(""); 
    } 
} catch (IOException ex) { 
    throw ex; 
} finally { 
    if (bufferedReader != null) { 
     try { 
      bufferedReader.close(); 
     } catch (IOException ex) { 
      throw ex; 
     } 
    } 
} 
requestBody = stringBuilder.toString(); 
Cuestiones relacionadas