专栏首页李蔚蓬的专栏Retrofit笔记 | 基本使用步骤

Retrofit笔记 | 基本使用步骤

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. 处理返回数据

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android Device Monitor--File Explorer 中的/data/data/..无法访问的问题

    最近在看《第一行代码》(第二版)中关于数据存储方案的介绍。数据的状态分为两种:瞬时状态和持久状态,一般保存在内存中的数据随着活动的关闭,数据也就销毁了,如果我们...

    凌川江雪
  • 计算机视觉 OpenCV Android | Mat像素操作

    下面演示对Mat对象中的每个像素点的值都进行取反操作,并且分别用这三种方法实现像素操作。

    凌川江雪
  • WebRTC | Web服务器原理、Nodejs工作原理、Nodejs事件处理流程、V8引擎等要点解析

    凌川江雪
  • vant upload 上传七牛

    天天_哥
  • R中t()转置后为什么会变成字符型数据

    数值型数据全部变成了字符型,怎么回事?其实是因为cluster那一列数据并不是数值型,而是字符型。因为这一列代表某一群细胞,如cluster0.所以才会出现这个...

    生信编程日常
  • 深度学习果实即将摘尽?11位大牛谈AI的当下(2018)与未来(2019)

    KDnuggets 分别获得了来自 Anima Anandkumar、Andriy Burkov、Pedro Domingos、Ajit Jaokar、Niki...

    机器之心
  • ROS2机器人笔记20-08-18

    如何用图形化界面而非代码在仿真环境中配置机器人模型?模型通常为刚体,弹性物体或者柔性物体仿真十分消耗资源!

    zhangrelay
  • 发布利用 Qt Assistant来做帮助系统的程序遇到的问题

    用户1653704
  • 从SpringBoot构建十万博文聊聊限流特技

    在开发十万博客系统的的过程中,前面主要分享了爬虫、缓存穿透以及文章阅读量计数等等。爬虫的目的就是解决十万+问题;缓存穿透是为了保护后端数据库查询服务;计数服务解...

    小柒2012
  • 【学习】R语言与机器学习学习笔记(2)决策树算法

    算法二:决策树算法 决策树定义 首先,我们来谈谈什么是决策树。我们还是以鸢尾花为例子来说明这个问题。 观察上图,我们判决鸢尾花的思...

    小莹莹

扫码关注云+社区

领取腾讯云代金券