在ContainerResponse过滤器中的response.getEntity()中获得null null
问题描述:
有时,当我拨打response.getEntity()
时,我收到null
。但我不明白原因,我不知道如何确保我在response.getEntity()
中获得的价值永远不会是null
。在ContainerResponse过滤器中的response.getEntity()中获得null null
这里是我的代码:
@Override
public ContainerRequest filter(ContainerRequest request) {
durationTime = System.currentTimeMillis();
InputStream in = null;
try {
requestBody = IOUtils.toString(request.getEntityInputStream(), Charsets.UTF_8);
in = IOUtils.toInputStream(requestBody);
request.setEntityInputStream(in);
} catch(EOFException ex){
log.error(ex.getMessage(), ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return request;
}
@Override
public ContainerResponse filter(ContainerRequest request, ContainerResponse response) {
ObjectMapper objMapper=null;
String output = objMapper.writeValueAsString(response.getEntity());
return response;
}
答
设置在只设置请求过滤实体串流的实体传入要求。它与响应实体无关。在响应滤波器getEntity()
是响应的实体,它只会每逢东西,如果你真正从资源的方法返回的实体。这就是响应实体的来源。