这是我的界面:
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始终是key的最后一个值而不支持重复。
我的api需要得到类似的东西:
myapi.com/getLastName?name=yoni&name=albert
我该怎么办? (没有番石榴库)
答案 0 :(得分:3)
您可以使用@Query("name") List<String> 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链接的更多详情。
答案 1 :(得分:0)
像这样制作界面
@POST
Call<Response> dynamicCall(
@Url String url,
@Body Object object);
用法:
dynamicCall(url,Object);
我希望这会对你有所帮助。