我正在使用 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();
然后它还为我提供了 NullPointerException 行 String requestSt = ....
所以请为我提供多次读取请求的解决方案。
最佳答案
您可以包装传入的请求实体,以确保其内容在第一次读取后不会丢失。为此,您可以利用 org.reSTLet.engine.io.BufferingRepresentation 类。
这一行应该可以做到:
request.setEntity(new BufferingRepresentation(request.getEntity());
您可能需要更新到版本 2.1,这是当前的稳定版本。
关于java - 为什么HttpRequest在第二次读取时返回NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18763877/