我正在使用RESTlet API 在 Java中创建webservices。我正在使用2.0稳定版。
在此,我在第二次阅读请求时遇到 NullPointerException 错误。
为了安全起见,我已在网络服务上应用过滤器。在过滤器类我检查请求包含预期的参数。如果成功,则调用webservice。
在webservice中处理时,我在请求中得到 NULL 。以下是我的Filter类 -
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();
然后它还为行字符串requestSt = ....
提供 NullPointerException请为我提供多次阅读请求的解决方案。
答案 0 :(得分:2)
您可以包装传入请求实体,以确保在第一次阅读后不会丢失其内容。为此,您可以利用org.restlet.engine.io.BufferingRepresentation类。
这一行应该这样做:
request.setEntity(new BufferingRepresentation(request.getEntity());
您可能需要更新到版本2.1,这是当前的稳定版本。