我是REST Web服务的新手,我尝试使用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


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

最佳答案

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

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>>>{}

关于java - 如何在Jersey REST Web服务中返回Array?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8725712/

10-13 04:25