2012-09-27 2 views
6

나는 HTTP 요청의 본문에 직접 액세스하는 방법을 찾고 있습니다. 사실, 제 코드에서는 신체에서 다른 매개 변수를받습니다. 그리고 나는 정확히 무엇을 받을지 미리 모릅니다. 또한 나는 가능한 한 유연 해지기를 원한다. 나는 달라질 수있는 다양한 요청을 다루고 있으며 각 요청 유형 (GET, POST, ...)에 대해 단일 메소드로 처리하려고한다. RESTEasy를 사용하여 이러한 수준의 유연성을 처리 할 수 ​​있습니까? 다른 것으로 전환해야합니까?RESTEasy로 HTTP 요청의 본문에 액세스하는 방법

+0

나는 MessageBodyReaderInterceptor를 사용하여 시도하지만 난 내가하고 싶은 일을하게되는 경우에도 확실하지 않다. 내가 아는 한, 일반적으로 RESTEasy를 사용하면 POJO 또는 여러 매개 변수를 허용하는 메서드를 작성하지만 그 매개 변수를 모르기 때문에 지정할 수는 없습니다 ... – Raffo

답변

5

this answer에 주어진 코드에 따라 HTTPServletRequest 객체에 액세스 할 수 있습니다.

일단 HTTPServletRequest 객체가 있으면 평소처럼 요청 본문에 액세스 할 수 있어야합니다. 한 예로 될 수 있습니다

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(); 
관련 문제