我在使用泽西时遇到了一个奇怪的事情.. 我有整个资源类的@Producer(MediaType.APPLICATION_JSON)。 我有一个类CustomerResponse,这是正常的) 如果我返回Response.status(Stauts.OK).entity(customerResponse).build(),在客户端,我将收到我期望的json实体。 但是,如果我返回Response.status(Stauts.BAD_REQUEST).entity(customerResponse).build(),则内容类型将变为text / html。
如果我将Producer更改为APPLICATION_XML,则会发生同样的事情。在我看来,只有400的响应将返回@Producer注释中指定的内容类型。对于具有其他状态代码的所有响应,它将只返回text / html。
任何人都可以帮我这个吗?非常感谢你。
答案 0 :(得分:1)
事实证明这很有趣。 我通过使用以下代码
开始使用grizzly servlet而不是灰熊服务器WebappContext webappContext = new WebappContext("GRIZZLY Web Server WebappContext");
ServletRegistration servletRegistration = webappContext.addServlet("JerseyServletContainer", ServletContainer.class);
servletRegistration.setInitParameter("jersey.config.server.provider.packages", WebServiceConstants.ROOT_PACKAGE);
servletRegistration.addMapping("/*");
webappContext.deploy(grizzlyWebServer);
startGrizzlyWebServer(grizzlyWebServer);
似乎servlet以某种方式将所有非OK(不是400)http响应的内容类型转换为type = text / html;字符集= ISO-8859-1。
如果我启动了grizzly-http-server,一切正常。
答案 1 :(得分:0)
我们使用如下:
Response.status(Response.Status.BAD_REQUEST).entity(myObject)
.type(MediaType.APPLICATION_JSON_TYPE).build()