我尝试与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())?有没有更好的方法呢?
答案 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
}