有时当我致电response.getEntity()
时,我会null
。但我不明白其中的原因,而且我也不知道如何确保response.getEntity()
中的价值始终不是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;
}
答案 0 :(得分:0)
在请求过滤器中设置实体流只设置传入请求的实体。它与响应实体无关。响应过滤器中的getEntity()
是响应实体,如果您实际从资源方法返回实体,则每个实体都会有一些内容。这就是响应实体的来源。