在将状态设置为HttpServletResponse后,客户端获得空响应

时间:2014-08-19 09:43:14

标签: java servlets

在java web-app中,我写给我的HttpServletResponse:

httpResponse.getWriter().write(someJsonString);
httpResponse.getWriter().flush();

客户端(在这种情况下为apache jmeter)获取正文中的json和状态200的响应。

如果我决定更改响应状态:

httpResponse.getWriter().write(someJsonString);
httpResponse.setStatus(Response.Status.NO_CONTENT.getStatusCode());
httpResponse.getWriter().flush();

我的客户端获得了具有正确状态的响应(在本例中为204),但由于某种原因,它是一个空主体。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

当您将响应发送为204时,表示没有正文。 见w3c rfc

  

204响应绝不能包含消息体,因此总是在头字段后面的第一个空行终止。

这意味着在发送回复时,容器未考虑正文或您的客户在阅读状态后会丢弃。

一种方法是在可能的情况下在网络浏览器中检查此响应。使用Chrome中的火虫或类似工具,您可以实际检查响应。