2012-09-27 13 views
6

私はHTTPリクエストの本文に直接アクセスする方法を探しています。実際、私のコードでは身体のさまざまなパラメータを受け取り、私は何を受け取るのかを事前に知っていません。さらに、私はできるだけ柔軟なものにしたいと思っています。私はさまざまなリクエストを扱っています。それぞれのリクエスト(GET、POST、...)ごとに1つのメソッドでそれらを処理したいと思っています。 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(); 
関連する問題