使用XML的Jersey RESTful服务(需要在JSON-Object外部封装)

时间:2011-09-14 08:09:04

标签: java xml json rest jersey

我尝试与Jersey一起在Java中实现一个宁静的Web服务。 在客户端和服务器端之间进行通信我正在注意XML。 我已经尝试过JSON。

使用JSON时,封装位于POJO-Object中,如:

@XmlRootElement
public class MyPojo {
    public int a;
    public int[] b;
}

然后我在Rest-Class中得到一个标题,如

public String classname(MyPojo p)

但我需要像

这样的标题
public String classname(int a, int [] b)

通过阅读Rest-Headers自动创建表单元素。 一个例子告诉我:

@Consumes("application/xml")
public classname methodname(@QueryParam("a") Integer a, @QueryParam("b") IntArray b)

应该有效。 问题:如何为此方法创建XML-Request(如XML中的JSON.stringify())?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

不确定我是否理解这个问题,但会尝试提供一些提示 - 希望至少其中一些是相关的。如果没有,请分享有关您的应用程序的更多信息(即,这是用于GET或POST请求吗?为什么有2个单独的参数等很重要。)

如果您需要在请求实体中发送XML或JSON(例如在POST请求中),则无法在多个参数中检索这些 - 您必须使用上面的单个对象参数。你能做的是以下几点:

@POST
@Consumes("application/xml")
public ClassName postMethod(MyPojo p) {
    return postMethod(p.a, p.b);
}

public ClassName postMethod(int a, int[] b) {
    // do something
}

或者,如果您真的不需要XML / JSON,如果您使用HTML表单进行POST,通常会执行以下操作:

@POST
@Consumes("application/x-www-form-urlencoded")
public ClassName postMethod(@FormParam("a") Integer a, @FormParam("b") String b /*I think arrays are not supported - will have to parse it yourself*/) {
    // do something
}