2017-07-07 155 views
0

我請求從一個Web服務頻道列表的客戶端應用程序。是否有可能從Web服務中獲取「響應」並將其存儲在ArrayList中?RESTful Web服務 - 列表

含義,如果我想保存例如頻道的列表,它通常會從Web服務來作爲響應,通常由ResponseBuilder。

我想將其存儲在一個ArrayList從客戶端,像列表。

我怎麼會去這樣做呢?

回答

0

您可以使用TypeReference來實例Channel對象列表,這裏有一個例子:

import com.fasterxml.jackson.core.type.TypeReference; 

public class ChannelClient { 

    public void getChannels() { 
    Response serviceResponse = client.target("http://your_service_url/channels/"). 
       request(MediaType.APPLICATION_JSON).get(Response.class); 
    String responseString = serviceResponse.readEntity(String.class); 
    List<Channel> list = new ObjectMapper().readerFor(new TypeReference<List<Channel>>() { 
     }).readValue(responseString); 
    } 
} 

確保有Jersey JSON Jackson罐子在你的依賴,你可以從這裏

https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson/2.26-b07

得到它

編輯:如果你想消費MediaType.TEXT_PLAIN響應,你只是改變請求方法參數傳送給指定的類型是這樣的:

Response serviceResponse = client.target("http://your_service_url/channels/"). 
      request(MediaType.TEXT_PLAIN).get(Response.class); 
+0

我得到這個錯誤時,我嘗試使用你所提議GenericType: RESTEASY003145:無法找到內容鍵入text/plain和類型接口的化MessageBodyReader的java.util.List –

+0

@HaisamTarekElkewidy我編輯我的回答 – fujy

+0

它的工作;感謝您的幫助。不過,我確實有一個問題。 如果我試圖消耗MediaType.TEXT_PLAIN,而不是APPLICATION_JSON,如何可以將代碼稍微改變? –