gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:44:50 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com