Android Retrofit GET @Query ArrayList

时间:2017-07-03 13:47:12

标签: android retrofit retrofit2 okhttp

我正在尝试使用GET API,该API在其查询参数列表中列出了一个字符串数组。

我正在使用Retrofit来完成任务。

在API界面中,我定义了以下内容:

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

我使用Timber进行日志记录,在控制台中,我看到请求如下:

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类型?

1 个答案:

答案 0 :(得分: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]