2017-07-03 97 views
1

我想消费一个GET API,它的查询参数列表中有一个字符串数组。Android Retrofit GET @Query ArrayList

我正在使用Retrofit进行任务。

在API接口,我有以下定义:

@GET("user/explore") 
Observable<User> fetchUsers(@Query("who") String who, 
                 @Query("category") ArrayList<String> categories); 

我使用木材用于记录和在控制台中,我看到请求是由如下所示:

http://192.168.2.208:3000/api/v1/user/explore?who=SOME_USER&category=SOME_CATEGORY 

预期的请求应该如下所示:

http://192.168.2.208:3000/api/v1/user/explore?who=SOME_USER&category=[SOME_CATEGORY,SOME_CATEGORY1,SOME_CATEGORY2] 

为什么改造行为是这样的通过类型的字符串arraylist?

回答

0
ArrayList<String> carArrList = new ArrayList<>(); 
     carArrList.add("a"); 
     carArrList.add("b"); 
     carArrList.add("c"); 
     String[] catArr = (String[]) carArrList.toArray(new String[carArrList.size()]); 
     String catStr = Arrays.toString(catArr); 

     catStr = catStr.replaceAll(" ", ""); 
     Log.e("catStr", catStr); 
     Call<User> call = apiService.fetchUsers(catStr); 
     call.enqueue(new Callback<User>() { 
      @Override 
      public void onResponse(Call<User> call, Response<User> response) { 
      } 

      @Override 
      public void onFailure(Call<User> call, Throwable t) { 
       // Log error here since request failed 
       Log.e(TAG, t.toString()); 
      } 
     }); 



@GET("list/") 
    Call<User> fetchUsers(@Query("category") String categories); 

最终请求生成

list/?category=[a,b,c] 
+0

这不能解决它,该请求是由像现在以下: 'http://192.168.2.208:3000/api/v1/user/explore ?who = SOME_USER&category [] = SOME_CATEGORY' – Fouad

+0

你的意思是我应该使用字符串构建数组表示形式吗? – Fouad

+0

检查更新的答案 – Pavya