5

带有 resteasy 框架的 Web 应用程序。

@Path("/do3")
@GET
public void response(@Context HttpServletResponse response) throws IOException{ 
    response.setStatus(202);

}

为什么得到 /do3 返回 204,而不是 202?提前致谢。

PS:(1)我切换到@post方法。它也无法通过get获得预期的代码:202。(2) response.addHeader("key", "value"); 可以正常工作。

4

1 回答 1

6

RESTEasy 正在尽其所能解释您的方法 - 您没有指定返回类型,因此它将 204(无内容)返回给客户端。voidGET方法确实没有多大意义,应该避免使用,或者转换为另一个 HTTP 动词(如 POST)。

就主题而言,这不是设置来自 JAX-RS 调用的响应状态的正确方法。您应该改用ResponseBuilder

Response.status(202).build();

HttpServletResponse当然,只要在调用上下文中有意义,您就可以将注入用于任何其他事情:

response.setHeader("Location", "http://www.example.com/myresource/5");
于 2012-04-16T04:58:33.627 回答