2017-08-10 29 views
0

有时,当我拨打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; 
} 

回答

0

设置在只设置请求过滤实体串流的实体传入要求。它与响应实体无关。在响应滤波器getEntity()响应的实体,它只会每逢东西,如果你真正从资源的方法返回的实体。这就是响应实体的来源。