如何在 Jersey REST Web 服务中返回数组?

发布于 2024-12-24 16:05:00 字数 554 浏览 0 评论 0原文

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

@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 服务代码,将数组传递给客户端吗?

I am new to REST webservice, I tried using Jersey implementation and wrote a simple webservice code to return List to calling client:

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

I am not sure how to get the value of the list in my client. I just tried using the below code in my client but I am getting error.

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

Can someone help me with a simple webservice code which passes the Array to client?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弄潮 2024-12-31 16:05:00

您应该能够仅返回一些 @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>>>{}

You should be able to return just List of some @XmlRootElement annotated objects and access them:

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

for some reason this is more complicated with plain strings, you need to encapsulate them with 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")
    };);
}

And access it similarly as in previous case, but you would need to "ask" for

new GenericEntity<List<JAXBElement<String>>>{}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文