Java REST-如何使用Jersey传递long-in参数数组?

Java REST-如何使用Jersey传递long-in参数数组?,java,rest,jax-ws,jersey,Java,Rest,Jax Ws,Jersey,我正试图通过一系列的长传: 在客户端,我尝试了类似的方法: @GET @Consume("text/plain") @Produces("application/xml) Response getAllAgentsById(@params("listOfId") List<Long> listOfId); @GET @消费(“文本/普通”) @生成(“应用程序/xml”) 响应getAllAgentsById(@params(“listOfId”)List listOfId);

我正试图通过一系列的长传:

在客户端,我尝试了类似的方法:

@GET
@Consume("text/plain")
@Produces("application/xml)
Response getAllAgentsById(@params("listOfId") List<Long> listOfId);
@GET
@消费(“文本/普通”)
@生成(“应用程序/xml”)
响应getAllAgentsById(@params(“listOfId”)List listOfId);
有没有办法实现这样的目标


提前感谢!

如果您只需要传递long数组,则可能不会出现任何问题。但我可能会传递long作为逗号分隔的字符串。(1232332344232),然后拆分字符串并转换为long

如果不是,我建议您使用Json序列化。如果您使用java客户端,那么google gson是一个不错的选择。在客户端,我将对我的列表进行编码:

  List<Long> test = new ArrayList<Long>();
            for (long i = 0; i < 10; i++) {
             test.add(i);
            }

  String s = new Gson().toJson(test);
List test=newarraylist();
用于(长i=0;i<10;i++){
测试。添加(i);
}
字符串s=new Gson().toJson(test);
并将此字符串作为post参数传递。在服务器端,我将这样解码

 Type collectionType = new TypeToken<List<Long>>() {
        } // end new
                .getType();
        List<Long> longList = new Gson().fromJson(longString,
                collectionType);
Type collectionType=new-TypeToken(){
}//结束新的
.getType();
List longList=new Gson().fromJson(longString,
收集类型);
如果您希望坚持使用“application/xml”格式并避免使用JSON格式,那么应该将这些数据包装到一个JAXB注释的对象中,以便Jersey可以使用内置的/

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
公开列表{
私有列表ID;
public ListOfIds(){}
公共列表ID(列表ID){
这个.ids=ids;
}
公共列表getIds(){
返回ID;
}
}
在客户端(使用Jersey客户端)

//获取您的长列表
List List=computeListOfIds();
//将其包装在对象中
ListOfIds idList=新的ListOfIds(列表);
Builder=webResource.path(“/agentsIds/”).type(“application/xml”).accept(“application/xml”);
ClientResponse-response=builder.post(ClientResponse.class,idList);

可能是,我误解了你的问题。(我以前的解决方案仍然有效)。但通常当您想要传递数组和其他复杂数据结构时,最好使用某种序列化机制。我通常使用Json格式进行通信。如果这是您想要的,请告诉我。谢谢您的回答。这是一种解决方案,但我的列表可以包含10000多个条目。您的解决方案有问题吗?10k条目将是非常长的字符串,您可能会遇到一些问题。我认为POST方法会更好。您必须POST。您使用什么客户端。如果您使用java客户端,那么我建议您使用google gson库。我添加了一个答案,因为我想粘贴一些代码片段。我使用了两种类型的客户端,PHP(Zend)PHP客户端有问题吗?如果我理解了,这段代码应该是works:@POST@Consumes(“application/json”)@products(“application/xml”)Response getAllAgentsById(@params(“listOfId”)String listOfId);我可以使用gson。可以吗?抱歉我的英语不好:-)
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public ListOfIds{

 private List<Long> ids;

 public ListOfIds() {}

 public ListOfIds(List<Long> ids) {
  this.ids= ids;
 }

 public List<Long> getIds() {
  return ids; 
 }

}
// get your list of Long
List<Long> list = computeListOfIds();

// wrap it in your object
ListOfIds idList = new ListOfIds(list);

Builder builder = webResource.path("/agentsIds/").type("application/xml").accept("application/xml");
ClientResponse response = builder.post(ClientResponse.class, idList);