【问题标题】:How does a java client access an integer array from a java RESTful web servicejava 客户端如何从 java RESTful Web 服务访问整数数组
【发布时间】:2011-01-28 05:14:08
【问题描述】:

我正在重新整理我自己的问题:Returning a primitive array through REST

我正在使用 Jersey,但我无法理解应该在服务器端和客户端添加哪些代码/注释以返回基元(字符串、整数等任何内容)的“数组”。我可以在 SOAP 中很容易地做到这一点……在 REST 中没有一些简单的方法吗?我在这里有一些复杂的方法: how-to-serialize-java-primitives-using-jersey-

一段代码(服务器和客户端)将不胜感激!

【问题讨论】:

    标签: java rest jersey


    【解决方案1】:

    将原始数组包装在 JAXB 注释对象中。 Jersey 将使用内置的MessageBodyReaderMessageBodyWriter

    例如

    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlAccessorType;
    
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    public IntArray {
    
     private int[] ints;
    
     public IntArray() {}
    
     public IntArray(int[] ints) {
      this.ints = ints;
     }
    
     public int[] getInts() {
      return ints; 
     } 
     ...
    }
    

    在服务器端:

    @Path("ints")
    public class TestResource {
    
     @GET
     @Produces("application/xml")
     public Response get() {
      int[] ints = {1, 2, 3};
      IntArray intArray = new IntArray(ints);
      return Response.ok(intArray).build();
     } 
    }
    

    在客户端:

    Client client = new Client();
    WebResource wr = client.resource("http://localhost:8080/service");
    IntArray intArray = wr.path("/ints").get(IntArray.class);
    int[] ints = intArray.getInts();
    

    尝试类似的方法。我没有测试代码,所以希望它可以工作。

    【讨论】:

    • 感谢 reverendgreen...但这不起作用。我在客户端得到一个空值:(
    • 奇怪...我刚刚测试了代码,效果很好。你能展示一下你的代码吗?也许我自己或其他人可以发现错误。
    • 在浏览器中尝试你的请求 URI;如果您没有看到预期的响应,那么这是服务器端的问题。
    • 非常感谢!我想我的代码没有工作,因为我避免使用 @XmlAccessorType(XmlAccessType.FIELD) !
    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2014-09-04
    • 2010-11-09
    相关资源
    最近更新 更多