سؤال

I am creating webservices in Java using RESTlet API. I am using 2.0 stable version.

In this I am getting NullPointerException error while reading the request for second time.

I have applied the Filter on webservices for security purpose. In filter class I am checking the request contains the expected parameters. If it is successful then the call is made to webservice.

While processing in the webservice I am getting the NULL in request. Following is my Filter class -

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;
    }
}

When I read the request for second time it returns NULL. Even when I just write -

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

before -

String requestSt = request.getEntityAsText();

then also it gives me NullPointerException for the line String requestSt = ....

So please provide me the solution to read the request for multiple times.

هل كانت مفيدة؟

المحلول

You can wrap the incoming request entity to ensure its content isn't lost after reading it a first time. For this purpose, you can leverage the org.restlet.engine.io.BufferingRepresentation class.

This line should do it:

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

You might need to update to version 2.1 which is the current stable version.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top