Java 如何在返回用户定义的对象时设置内容长度
我在tomcat上运行Jersey rest服务。我为rest调用返回一个响应对象,但负载的实体是我定义的类的对象列表。如何在此列表的响应标题中设置内容长度Java 如何在返回用户定义的对象时设置内容长度,java,rest,jersey,content-length,Java,Rest,Jersey,Content Length,我在tomcat上运行Jersey rest服务。我为rest调用返回一个响应对象,但负载的实体是我定义的类的对象列表。如何在此列表的响应标题中设置内容长度 @Path("/somePath") @GET @Produces(MediaType.APPLICATION_JSON) public Response myRestAPI(@CookieParam(value = "value") String cookieValue) { /*..
@Path("/somePath")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response myRestAPI(@CookieParam(value = "value") String cookieValue) {
/*..
* some business logic here
*/
List<MyObject> myObjects = getMyObjectList();
return Response.ok(myObjects).cookie(createCookie(value)).build();
}
我怎样才能找到列表的长度?
提前感谢我想应该自动包括内容长度标题。在我使用RestEasy(不是Jersey)的情况下,它是
您是否可以确认未包括标题,例如使用curl或Firebug
最后,要100%确定的是:Content Length是HTTP内容的长度(正文,请参见),而不是list.size()返回的列表大小。我已经选中了它,内容长度没有设置。现在,
Transder Encoding:chunked
已设置,在调查中,我发现它是默认的标题集,要删除它,我需要设置内容长度
标题。请参阅。。。我找到了。可能是响应太大,因此您必须接受分块传输,或者增加缓冲区的长度。
return Response.ok(myObjects).header("content-length", length).cookie(createCookie(value)).build();