如何在Jersey REST webservice中返回Array?

时间:2012-01-04 11:01:10

标签: java jersey

我是REST webservice的新手,我尝试使用Jersey实现并编写了一个简单的Web服务代码,将List返回给调用客户端:

@GET
@Produces(MediaType.TEXT_XML)
public GenericEntity<List<String>> stringlist() {
    List<String> list = Arrays.asList("test", "as");
    return new GenericEntity<List<String>>(list) {
    };
}

我不确定如何在我的客户端获取列表的值。我刚试过在我的客户端使用下面的代码,但是我收到了错误。

service.path("rest")
       .path("getVal")
       .accept(MediaType.TEXT_XML)
       .get(GenericEntity.class

有人可以通过简单的Web服务代码帮助我将Array传递给客户端吗?

1 个答案:

答案 0 :(得分:2)

您应该只能返回一些@XmlRootElement注释对象的List并访问它们:

service.path("rest").path("getVal").accept(MediaType.TEXT_XML).get(new GenericEntity<List<MyObj>>{});

由于某些原因,使用普通字符串会更复杂,您需要使用JAXBElement

封装它们
@GET
@Produces(MediaType.TEXT_XML)
public List<JAXBElement<String>> stringlist() {
     Arrays.asList(new JAXBElement[] {
        new JAXBElement(QName.valueOf("element1"), String.class, "ahoj"),
        new JAXBElement(QName.valueOf("element2"), String.class, "nazdar")
    };);
}

并像以前的情况一样访问它,但你需要“询问”

new GenericEntity<List<JAXBElement<String>>>{}