带有 XML 的 Jersey RESTfull 服务(需要在 JSON 对象外部进行封装)

发布于 2024-12-04 18:05:42 字数 684 浏览 1 评论 0原文

我尝试用 Java 和 Jersey 一起实现一个宁静的 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 自动创建 Form-Elements。 一个例子告诉我:

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

应该有效。 问题:如何为此方法创建 XML 请求(如 XML 中的 JSON.stringify())?也许有更好的方法吗?

I try to implement a restful webservice in Java together with Jersey.
To communicate between the client- and server-side i´m watching out for XML.
I already tried JSON.

When using JSON, the encapsulation is in the POJO-Object like:

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

Then I just got a header in the Rest-Class like

public String classname(MyPojo p)

But I need a header like

public String classname(int a, int [] b)

to create Form-Elements automatically by reading the Rest-Headers.
An example showed me that:

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

should work.
Question: How can I create a XML-Request (like JSON.stringify() in XML) for this method? Is there maybe a better way doing this?

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

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

发布评论

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

评论(1

金橙橙 2024-12-11 18:05:42

不确定我是否理解这个问题,但会尝试提供一些提示 - 希望至少其中一些是相关的。如果没有,请分享有关您的应用程序的更多信息(即,这是针对 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
}

Not sure if I understand the question, but will try to provide some hints - hopefully at least some of it will be relevant. If not, please share more about your app (i.e. is this for GET or POST requests? why is it important to have 2 separate parameters, etc.)

If you need to send XML or JSON in the request entity (e.g. in a POST request), then it is not possible to retrieve these in multiple parameters - you have to live with the single object parameter as you have above. What you could do is the following:

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

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

Or, if you don't really need XML/JSON, if you are POSTing using HTML forms, typically you do the following:

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