繁体   English   中英

将响应媒体类型设置为xml或json

[英]Set Response media type as either xml or json

这是我正在使用的代码(其他人的项目):

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);东西.type(MediaType.TEXT_XML); 但是鉴于必须使用的代码以及所找到的各种示例和文档,我似乎无法弄清楚。

任何帮助或朝正确方向的指导将不胜感激。 谢谢!

我假设您正在使用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 ,您正在使用构建器模式 因此,要将某些内容更改为将要构建的新对象,必须使用适当的方法来为新类的属性设置值。

假设您使用的是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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM