Android Retrofit的使用详解
作者:锯齿流沙 发布时间:2022-12-11 01:28:37
标签:Android,Retrofit
关于Retrofit的学习,我算是比较晚的了,而现在Retrofit已经是Android非常流行的网络请求框架了。之前,我没有学过Retrofit,但最近公司的新项目使用了Retrofit、Rxjava和OkHttp来进行封装,使用起来非常简便,增加代码的美观程度,也降低了耦合度,这是一个非常棒的框架,特别是这三者一起使用。
简介
Retrofit是Square公司开发的一款针对Android网络请求的框架,现在已经更新到2.3版本了。Retrofit的最大特点是使用运行时注解的方式提供功能。
Retrofit的使用
关于Retrofit的使用,其实还是很简单的,而且逻辑思路也比较清晰,所以开发者是很容易上手的。
添加依赖
build.gradle文件的dependencies下添加以下依赖:
compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0'
上面除了添加Retrofit依赖,还添加了gson依赖,来解析请求得到的json数据。
定义使用的数据集合
class Result <T>{
var status: Int? = -1//请求结果
lateinit var message: String;
var content :T?= null
}
这是返回结果的集合,使用了kotlin来写
class Content {
var name: String?= null
var mobile :String?= null
var address :String?= null
}
需要的内容集合类
请求
需要一个接口,并且编写请求的方法
interface HttpService {
@GET("index.php?m=Api&c=User&a=userInfo")
fun getUserInfo(): Call<Result<Content>>
}
调用请求
private void request() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://one.sinalwj.cn//")
.addConverterFactory(GsonConverterFactory.create())
.build();
HttpService service = retrofit.create(HttpService.class);
Call<Result<Content>> call = service.getUserInfo();
call.enqueue(new Callback<Result<Content>>() {
@Override
public void onResponse(Call<Result<Content>> call, Response<Result<Content>> response) {
Log.i("tag", response.body().getContent().getName());
}
@Override
public void onFailure(Call<Result<Content>> call, Throwable t) {
Log.i("tag", "失败");
}
});
}
来源:https://juejin.im/post/5a438ca4518825772a4b44cd


猜你喜欢
- 功能需求:为软件设定一个使用有效期,当超过指定时间后,程序无法运行。实现思路:定义一个常量,用于记录一个时间,我们称之为标记时间,使用当前时
- 本文实例为大家分享了java实现页显示效果的具体代码,供大家参考,具体内容如下效果图如下:实现步骤:1.创建实体User.class,参考代
- 本文实例讲述了C#模拟Http与Https请求框架类。分享给大家供大家参考。具体实现方法如下:using System.Text;using
- 前言Bitmap相信对各位Android开发者们来说都不陌生,用它可以获取图片信息,进行图片剪切、平移、旋转、缩放等操作,并可以指定格式保存
- 设置流程百度查阅了几个资料感觉没啥用,经过自己一番试验,总结了简单的方法,具体做法是1.从工具栏拖出一个按钮2.在vs外部使用编辑进入到画图
- 同步是一种只允许一个线程在特定时间访问某些资源的技术。没有其他线程可以中断,直到所分配的线程或当前访问线程访问数据完成其任务。在多线程程序中
- 目录(1)class常量池(2)运行时常量池(3)基本类型包装类常量池(4)字符串常量池总结java中有几种不同的常量池,以下的内容是对ja
- 枚举中有values方法用于按照枚举定义的顺序生成一个数组,可以用来历遍。我们自定义的枚举类都是继承自java.lang.Enum,拥有一下
- Spark_SQL性能调优众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发、分析人员更高效地使用Spark进
- 克隆,想必大家都有耳闻,世界上第一只克隆羊多莉就是利用细胞核移植技术将哺乳动物的成年体细胞培育出新个体,甚为神奇。其实在Java中也存在克隆
- 公司的老项目要改造多租户,于是进入了大坑,本文写点遇到的坑以及解决方案,每次遇到问题在网上搜了好久,记录下来,防止以后忘掉。(一).方案网上
- string t = DateTime.Now.Ticks.ToString();
- 业务现象代码中有一部分代码多次嵌套循环和数据处理,执行速度很慢解决方案通过多线程1、启用多线程private final static Ex
- 本文实例为大家分享了C#串口通信工具类的封装代码,供大家参考,具体内容如下 1、SerialPortHelper串口工具类封装us
- 本文实例讲述了C#实现农历日历的方法。分享给大家供大家参考。具体实现方法如下://天干 private static
- 目录背景问题解决思路其他问题小结背景关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西;同时组内一个个都在业务上能有自己的
- 今年新开Java课程第一步就是…配置环境就从Java的环境配置开始好了以下是正式的步骤首先,从Oracle的官网下载jdk的安装包点我下载J
- 本文实例讲述了Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法。分享给大家供大家参考,具体如下:情景描述:在a
- 一、Java 8 基本 Base64 基本的加
- 欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demo