【问题标题】:How to access HTTP request's body with RESTEasy如何使用 RESTEasy 访问 HTTP 请求的正文
【发布时间】:2012-09-27 09:02:42
【问题描述】:

我正在寻找一种直接访问 HTTP 请求正文的方法。事实上,在我的代码中,我在正文中收到了不同的参数,我事先并不知道我会收到什么。此外,我希望尽可能灵活:我正在处理可能会有所不同的不同请求,并且我希望针对每种类型的请求(GET、POST、...)以单一方法处理它们。 有没有办法使用 RESTEasy 来处理这种级别的灵活性?我应该切换到其他东西吗?

【问题讨论】:

  • 我尝试使用 MessageBodyReaderInterceptor 但我什至不确定这是为了做我想做的事。据我所知,通常使用 RESTEasy 您编写的方法可以接受一个 POJO 或多个参数,但我不知道它们,所以我无法指定它们......

标签: java http rest resteasy


【解决方案1】:

根据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();

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多