Retrofit简单使用二

2018-04-27  本文已影响26人  winelx

遇见这个样一个请求,需要传递五个参数,但是又不是每次都传五个,这个时候怎么用呢?
这里需要用到另外一个关键注解@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) {

            }
        });

上一篇 下一篇

猜你喜欢

热点阅读