遇见这个样一个请求,需要传递五个参数,但是又不是每次都传五个,这个时候怎么用呢?
这里需要用到另外一个关键注解@QueryMap
接口
http://gc.ditu.aliyun.com/regeocoding/?l=39.938133,116.395739&type=001
先上接口类
public interface Api {
@GET("GetMoreWeather")
Call<ResponseBody> getWeather(@QueryMap Map<String,String> map);
}
Activity里的代码
retrofit = new Retrofit.Builder()
.baseUrl("http://gc.ditu.aliyun.com/regeocoding/")
.build();
api = retrofit.create(Api.class);
//核心区别,参数存在一个map里
Map<String, String> map = new HashMap<String, String>();
map.put("l", "39.938133,116.395739");
map.put("type", "001");
Call<ResponseBody> call = api.getWeather(map);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response){
try {
//这里需要使用.toString(),如果这样response.body().string(),那就无法展示到界面
String str=response.body().string().toString();
Toast.makeText(Main6Activity.this, str, Toast.LENGTH_SHORT).show();
textView.setText(str);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});