2015-10-20 25 views
1

我想打電話給服務發送使用的RESTEasy客戶端列表作爲查詢參數發送列表,查詢參數:如何使用的RESTEasy客戶

服務:

@POST 
@Path("/names") 
public void getNames(@QueryParam("name") final List<String> names) { 

} 

客戶:

final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>(); 
queryParams.add("name", "name1"); 
queryParams.add("name", "name2"); 
final ResteasyClient client = new ResteasyClientBuilder().build(); 
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);; 
final Builder builder = target.request(); 
builder.accept(MediaType.APPLICATION_JSON) 
final Response response = builder.post(Entity.form(form)); 

當我呼叫/names端點將有1個元素和names.get(0) == [name1, name2]

+0

@CássioMazzochi Molin:包含查詢參數的URI通常用於標識資源,而請求的主體包含資源的表示形式。所以在某些情況下,它可能是有意義的。 'POST'給忠誠顧客的禮物:'/ customers?minOrders = 10'。 – lefloh

+0

@ user3784148:您使用的是哪個版本的RESTeasy?無法用3.0.6.Final重現它。或者可能誤解了你的問題。 – lefloh

+0

@lefloh我試圖編輯並意外刪除了我的評論。您在'POST'請求中使用查詢參數是完全正確的。感謝您提供示例。 –

回答

2

問題解決了。我最近發佈的代碼運行良好。

的錯誤代碼是:

final List<String, String> list = new ArrayList<>(); 
list.add("name1");  
list.add("name2");  
final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>(); 
queryParams.addAll("name", list); 
final ResteasyClient client = new ResteasyClientBuilder().build(); 
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);; 
final Builder builder = target.request(); 
builder.accept(MediaType.APPLICATION_JSON) 
final Response response = builder.post(Entity.form(form)); 

,如果我看的類的代碼MultivaluedMapImpl我不,如果我使用「添加」或「中的addAll」的方法尋找差異!

相關問題