Retrofit笔记 | 基本使用步骤

作者: 凌川江雪 | 来源:发表于2019-06-09 03:34 被阅读9次

    Retrofit使用基本步骤

    1. 添加好依赖

        implementation 'com.squareup.okhttp3:okhttp:3.4.1'
        implementation 'com.squareup.retrofit2:retrofit:2.1.0'
        implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
    

    1.2添加权限

    <uses-permission android:name="android.permission.INTERNET"/>
    

    2. 创建接口,设置请求类型与参数

    • 新建UserInfoModel类(一个根据服务端数据的格式,如json数据的格式字段,而设计的一个Java类,类中的成员字段对应着服务端数据字段
      举个例子:
      如服务器端数据格式如下:
      则对应设计的UserInfoModel类:
    • 以及UserMgrService接口,
      常用参数注解:**
      @GET、@POST:确定请求方式;
      @Path:请求URL的字符替代;
      @Query:要传递的参数;
      @QueryMap:包含多个@Query注解参数;
      @Body:添加实体类对象
      @FormUrlEncoded:URL编码;
      示例:
    @GET("login")
    public Call<UserInfoModel> login(@Query("username") String username,@Query("pwd") String pwd);
    

    3. 创建Retrofit对象,设置数据解释器

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(url)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
    

    4. 生成接口对象

    UserMgrService service = retrofit.create(UserMgrService.class);

    5. 调用(刚刚在接口中定义过的)接口方法,返回Call(数据类)对象

    Call<UserInfoModel> call = service.login("zhangsan","123456");

    6. 发送请求(同步、异步)

    • 只有发送了请求,以上至第五步才能真正获得数据;
      同步:调用Call对象的execute(),返回结果的响应体;
      异步:调用Call对象的enqueue(),参数是一个回调;

    • 同步指程序调用请求方法后,
      就一直等着返回数据,不干别的事情,
      可能长时间阻塞线程;

      异步指程序调用请求方法后,
      直接干别的事情,不干等着数据返回了,
      而是设置好回调,数据来时通过回调传讯,
      不阻塞线程;

    • 同步调用需要手动做一个防阻塞处理(设置等待响应时间,超过则认定无响应,阻塞线程);
      异步调用则不需要考虑这个问题;

    7. 处理返回数据

    相关文章

      网友评论

        本文标题:Retrofit笔记 | 基本使用步骤

        本文链接:https://www.haomeiwen.com/subject/ocpbxctx.html