retrofit:2.2.0的基本使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeekmary/article/details/82463400

retrofit:2.2.0框架功能强大,在网络加载方面封装的非常优秀,今天我们来了解下他的基本使用方法

1,导入依赖:

这里把gson这个优秀的框架也一并导入

    implementation 'com.squareup.retrofit2:retrofit:2.2.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.2.0'

2,初始化Retrofit对象

//很明显我们可以看到Retrofit这个框架采用的是构建者模式
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(Contant.BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
/**
 *这里有必要解释下这个BASE_URL,这个string表示的是服务器连接的最顶级
 * 例如: 
 * https://mp.csdn.net/mdeditor/a.png
 * https://mp.csdn.net/mdeditor/c.png
 * https://mp.csdn.net/mdeditor/mm/.png
 * https://mp.csdn.net/mdeditor/yh.png
 * https://mp.csdn.net/mdeditor/my.png
 * name这里的BASE_URL就是 https://mp.csdn.net/mdeditor/
 * 可以理解为根url
  */        

3,制定网络请求实体

    responseInfoAPI = retrofit.create(ResponseInfoAPI.class)
     /**
       * 在这里就需要重点介绍下这个ResponseInfoAPI ,这个名字是自己起的,叫什么无所谓,主要是里面的内容
       */

我们需要重新写一个接口

public interface ResponseInfoAPI {
    //指定请求方式
    //请求的完整链接地址
    //请求的方法,请求参数
    //请求的相应结果
    //http://10.0.2.2:8080/TakeoutServiceVersion2

    @GET(Contant.HOME_URL)
    Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String longitude);
}
 /**
   * 1,很多人看到这里就比较迷糊了,读者可以先看成一个普通接口
   * getHomeInfo(String latitude,String longitude)
   * 2,接下来@GET(Contant.HOME_URL)这个表示将HOME_URL这个连接传进去,注意这里的HOME_URL会拼接在前面的BASE_URL的后面形成一个完整的URL链接。形成以下的形式,get的形式
   * @GET(Contant.HOME_URL)
   * getHomeInfo(String latitude,String longitude)
   * 3,完整的url是形成了,但是需要传入相关的参数,这里的参数就是String latitude,String longitude,在retrofit中用一个标志表示在get中传入的参数也就是@Query("latitude")
   * 4,最后带一个返回值
   * @GET(Contant.HOME_URL)
   * Call<ResponseInfo> getHomeInfo(@Query("latitude") String latitude, @Query("longitude") String 
   * 5,这里的返回值是你自己定义的,但是必须跟你的数据对应
   */

3,触发调用

public class HomePresenter extends BasePresenter {
    @Override
    protected void showError(String message) {

    }

    @Override
    protected void parseJson(String json) {
        //在此处解析JSON
        Gson gson = new Gson();
        gson.fromJson(json, HomeInfo.class)
    }
    //触发网络请求
    public void getHomeData(String lat,String lon){
        Call<ResponseInfo> homeInfo = responseInfoAPI.getHomeInfo(lat, lon);
        //触发callback中的成功或者失败的回调方法
        homeInfo.enqueue(new CallBackAdapter());
    }
}

一旦getHomeData这个方法被调用就会执行网络请求,而此时这个类实现了上一个类,需要实现两个回调方法,于是就会有数据出来

猜你喜欢

转载自blog.csdn.net/jeekmary/article/details/82463400
今日推荐