【问题标题】:Retrofit - send dynamic queries with same key改造 - 发送具有相同键的动态查询
【发布时间】:2017-08-07 18:11:09
【问题描述】:

这是我的界面:

 public interface ServerCalls{
        @GET
        Call<List<Integer>> searchNames(@Url String url, @QueryMap Map<String, 
        String> options);
    }
 }

这是我的电话:

    APIs.LoadDataService service = 
        retrofit.create(APIs.LoadDataService.class);
        Map<String, String> parameters = new HashMap<>();
        parameters.put("name","yoni");
        parameters.put("name","albert");
        parameters.put("q","text");
        Call<List<Integer>> call = service.searchNames(APIs.GET_NAMES, parameters);

要使用动态查询进行调用,我需要使用@QueryMap,这意味着我需要使用一些 Map。 我的问题是当我需要发送相同的键时,因为 Map 总是从键中获取最后一个值并且不支持重复。

我的 api 需要得到类似的东西:

myapi.com/getLastName?name=yoni&name=albert

我该怎么做? (没有番石榴库)

【问题讨论】:

标签: java android retrofit retrofit2


【解决方案1】:

制作这样的界面

 @POST
 Call<Response> dynamicCall(
        @Url String url,
        @Body Object object);

用法:

dynamicCall(url,Object);

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您可以使用@Query("name") List&lt;String&gt; names

    例子:

    public interface Api {
        @GET("/getLastName")
        Call<ResponseBody> getLastName(@Query("name") List<String> names,
                                       @QueryMap Map<String, String> otherUniqueKeys);
    }
    
    List<String> names = new ArrayList();
    names.add("yoni");
    names.add("albert");
    
    // create an instance of Api interface with retrofit
    Api api = ...
    api.getLastName(names).enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    
        }
    
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
    
        }
    });
    

    更多详情请查看this 链接。

    【讨论】:

    • 但是正在做的是这个输出:name=yoni,albert 我需要:name=yoni&name=albert
    • 我在 Retrofit 2 上使用
    • 你能告诉我你是如何将数据添加到 List 名称的吗?
    • 我使用 QueryMap 因为我需要动态键所以我不能使用@query
    • 这可能是@QueryMap Map>?
    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2019-09-19
    • 2021-05-02
    • 1970-01-01
    • 2023-04-08
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多