在ContainerResponse过滤器中的response.getEntity()中获取null

时间:2017-08-10 08:50:02

标签: java jersey

有时当我致电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;
}

1 个答案:

答案 0 :(得分:0)

在请求过滤器中设置实体流只设置传入请求的实体。它与响应实体无关。响应过滤器中的getEntity()响应实体,如果您实际从资源方法返回实体,则每个实体都会有一些内容。这就是响应实体的来源。