0

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

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

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

在 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 = ...。

因此,请为我提供多次阅读请求的解决方案。

4

1 回答 1

2

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

这条线应该这样做:

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

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

于 2013-09-12T22:12:53.947 回答