【问题标题】:Android Retrofit GET @Query ArrayListAndroid 改造 GET @Query ArrayList
【发布时间】:2017-07-03 13:47:11
【问题描述】:

我正在尝试使用一个 GET 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]

尽管类别是字符串数组列表类型,为什么改造会以这种方式发生?

【问题讨论】:

    标签: android retrofit retrofit2 okhttp


    【解决方案1】:
    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]
    

    【讨论】:

    • 这并没有解决它,现在请求如下:http://192.168.2.208:3000/api/v1/user/explore?who=SOME_USER&amp;category[]=SOME_CATEGORY
    • 你的意思是我应该使用字符串构建数组表示吗?
    猜你喜欢
    • 2016-01-16
    • 2018-03-06
    • 2015-11-04
    • 2022-01-04
    • 2019-11-11
    • 2022-07-25
    • 1970-01-01
    • 2016-12-22
    • 2020-11-02
    相关资源
    最近更新 更多