这是我正在使用的代码(其他人的项目):
public class MyResponse
public static Response success(String content) {
MyResponse aRsponse = response(content);
return Response.status(Status.OK).entity(aRsponse.getContent()).build();
}
public static MyResponse response(final String content) {
return MyResponse.builder().content(content).build();
}
调用成功方法的GET / POST在它们之前有@Produces(MediaType.TEXT_XML)
。
我已经实现了一些逻辑来确定content
是XML还是JSON,并且我认为我会将其作为成功的参数传递给我。如下所示:
public static Response success(String content, boolean isJson)
现在我需要设置Response的媒体类型(带有if / else)。我知道我需要一些.type(MediaType.TEXT_XML);
的内容,但鉴于我必须使用的代码以及我找到的各种示例和文档,我似乎无法弄清楚这一点。
任何帮助或指导正确的方向将不胜感激。谢谢!
答案 0 :(得分:1)
我假设你正在使用JAX-RS,对吗?
查看Response
对象文档。您正在寻找type
方法。
http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/Response.ResponseBuilder.html
要设置不同的MediaType
,您的代码应如下所示:
Response.status(Status.OK).type(MediaType.TEXT_XML).entity(aRsponse.getContent()).build();
当您编写代码Response.attribute
时,您正在使用Builder Pattern。因此,要将某些内容更改为要构建的新对象,必须使用适当的方法为新类设置属性值。
答案 1 :(得分:1)
假设您使用的是JAXB / JAX-RS和最新版本,则无需担心此类问题。只需返回对象,让实现处理剩下的事情。无需以编程方式设置媒体类型或构建。
例如。
@GET
@Path("/xmlexample")
@Produces(MediaType.APPLICATION_XML)
public MyObject xml() {
return new MyObject();
}
@GET
@Path("/jsonexample")
@Produces(MediaType.APPLICATION_JSON)
public MyObject json() {
return new MyObject();
}
你只需要确保你的班级有正确的注释,例如。 @XmlElement。