簡體   English   中英

REST-如何使用Jersey傳遞一個長參數數組?

[英]REST - How to pass an array of long in parameter with Jersey?

我想和Jersey一起傳遞一些長篇文章:

在客戶端,我嘗試過類似的方法:

@GET
@Consume("text/plain")
@Produces("application/xml)
Response getAllAgentsById(@params("listOfId") List<Long> listOfId);

有沒有辦法實現類似的東西?

提前致謝!

如果要堅持使用“ application / xml”格式並避免使用JSON格式,則應將此數據包裝到帶有JAXB注釋的對象中,以便Jersey可以使用內置的MessageBodyWriter / MessageBodyReader

@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; 
 }

}

在客戶端(使用Jersey客戶端)

// 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);

如果只需要傳遞長數組,則可能沒有任何問題。 但是我可能會使用逗號分隔的長字符串。 (123,233,2344,232),然后拆分字符串並將其轉換為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);

並將此字符串作為post參數傳遞。 在服務器端,我將像這樣解碼。

 Type collectionType = new TypeToken<List<Long>>() {
        } // end new
                .getType();
        List<Long> longList = new Gson().fromJson(longString,
                collectionType);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM