8

HTTP リクエストの本文に直接アクセスする方法を探しています。実際、私のコードでは、本体でさまざまなパラメーターを受け取りますが、受け取るものを正確に事前に知りません。さらに、私は可能な限り柔軟になりたいと思っています。さまざまな異なるリクエストを扱っており、リクエストのタイプごとに単一のメソッド(GET、POST、...)でそれらを処理したいと考えています。RESTEasy でこのレベルの柔軟性を処理する方法はありますか? 他のものに切り替える必要がありますか?

4

1 に答える 1

5

この回答で指定されたコードに従って、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();
于 2012-09-29T18:59:03.970 に答える