如何使用RESTEasy访问HTTP请求的正文

时间:2012-09-27 09:02:42

标签: java http rest resteasy

我正在寻找一种直接访问HTTP请求正文的方法。事实上,在我的代码中,我在身体中接收到不同的参数,我事先并不知道我将收到什么。此外,我希望尽可能灵活:我正在处理可能不同的不同请求,我希望在每种类型的请求(GET,POST,...)的单个方法中处理它们。 有没有办法通过RESTEasy处理这种灵活性?我应该切换到别的吗?

1 个答案:

答案 0 :(得分: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();