java - 为什么HttpRequest在第二次读取时返回NULL?

标签 java web-services rest httprequest restlet

我正在使用 RESTlet API 在 Java 中创建 Web 服务。我使用的是2.0稳定版本。

在此,我在第二次读取请求时收到 NullPointerException 错误。

出于安全目的,我已在网络服务上应用了过滤器。在过滤器类中,我正在检查请求是否包含预期的参数。如果成功,则调用 Web 服务。

在网络服务中处理时,我收到请求中的NULL。以下是我的过滤器类 -

public class MyFilter extends Filter {

    public MyFilter(Context context) {
        super(context);
    }

    @Override
    protected int beforeHandle(Request request, Response response) {

        int result = STOP;
        try
        {
                String requestSt = request.getEntityAsText();
                // Check for validation 
        } catch (Exception e) {
            e.printStackTrace();
        }


        return result;
    }
}

当我第二次读取请求时,它返回NULL。即使我只是写 -

System.out.println(request.getEntityAsText());

之前 -

String requestSt = request.getEntityAsText();

然后它还为我提供了 NullPointerExceptionString requestSt = ....

所以请为我提供多次读取请求的解决方案。

最佳答案

您可以包装传入的请求实体,以确保其内容在第一次读取后不会丢失。为此,您可以利用 org.reSTLet.engine.io.BufferingRepresentation 类。

这一行应该可以做到:

request.setEntity(new BufferingRepresentation(request.getEntity());

您可能需要更新到版本 2.1,这是当前的稳定版本。

关于java - 为什么HttpRequest在第二次读取时返回NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763877/

相关文章:

java - Selenium 网络驱动程序。从 div 列表中选择元素

java - InputStream 无法处理 2016 字节

java - 如何将本地运行的 Web 服务(REST api,java 格式)上传到主机服务器

java - 如何在 Jersey 中实现这种身份验证机制

java - 通过服务器调用 Web 服务会导致 java.net.MalformedURLException : no protocol

java - hibernate 5.0.1 和 Java 8;找不到提供者 org.hibernate.type.Java8DateTimeTypeContributor

java - 隐藏或删除 REST Web 服务中的路径

c# - 将文档上传到 Sharepoint 时添加元数据

REST 和 "never delete anything"应用程序

java - Eclipse 中的简单 RESTful API 代码给出 HTTP 状态 500 - 内部服务器错误