android retrofit入门,Android开发 retrofit入门讲解
前言
retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习使用retrofit,传送门:Android 开发 框架系列 OkHttp使用详解
Retrofit优势,就是简洁易用,解耦,扩展性强,可搭配多种Json解析框架(例如Gson),另外还支持RxJava.但是,这篇博客不讲解RxJava配合使用的部分,与RxJava的配合使用将在另外一篇博客中讲解.
另外retrofit已经是封装的非常好了,已经最大程度上的匹配各种使用情况,所以不建议多此一举的再次封装retrofit(最多封装retrofit的单例). 再次封装不会看起来很帅也不会让你很牛逼. 只会让你看起来更蠢.把已经很拓展很解耦的实现全部破坏.
Github地址
依赖
如果你不需要使用RxJava模式,那么你只需要依赖下面2个:
implementation 'com.squareup.retrofit2:retrofit:2.6.2'implementation'com.squareup.retrofit2:converter-gson:2.4.0'
gson是用来解析的Json数据使用的(个人偏爱Gson),retrofit也支持其他解析工具比如fastJson
简单的Demo
老规矩按思维顺序讲解demo
1.创建Retrofit请求基础配置
Retrofit配置好后,可以全局使用这一个Retrofit用来请求网络(所以你可以实现单例以全局使用),当然下面的代码只是demo:
privateRetrofit mRetrofit;private voidinitHttpBase(){
mRetrofit= newRetrofit.Builder()
.baseUrl("http://doclever.cn:8090/mock/5c3c6da33dce46264b24452b/")//base的网络地址
.addConverterFactory(GsonConverterFactory.create())//使用Gson解析
.build();
}
2.创建数据返回后的Bean类
public classLoginBean {private intcode;privateString message;public intgetCode() {returncode;
}public void setCode(intcode) {this.code =code;
}publicString getMessage() {returnmessage;
}public voidsetMessage(String message) {this.message =message;
}
}
2.创建一个网络请求接口
public interfaceHttpList {
@FormUrlEncoded//注解表示from表单 还有@Multipart 表单可供使用 当然你也可以不添加
@POST("test/login_test") //网络请求路径
Call login(@Field("number") String number, @Field("password") String password);
}
注意,这是一个接口类. LoginBean则是数据返回后的Bean类(Retrofit会自动使用导入的Gson解析)
3.请求网络
private voidpostHttp(){
HttpList httpList= mRetrofit.create(HttpList.class);
Call call = httpList.login("181234123", "123456");
call.enqueue(new Callback() {
@Overridepublic void onResponse(Call call, Responseresponse) {
LoginBean bean=response.body();
Log.e(TAG,"onResponse: code="+bean.getCode());
Log.e(TAG,"onResponse: message="+bean.getMessage());
}
@Overridepublic void onFailure(Callcall, Throwable t) {
Log.e(TAG,"onFailure: 网络请求失败="+t.getMessage());
}
});
}
这样,我们就完成了一个网络请求.是不是特别简单
如何停止网络请求
如何添加Header头
以固定数据的形式添加头信息
public interfaceHttpList {
@Headers({"content1:one","content2:two"})
@POST("test/logout_test")
Calllogout1();
}
以非固定数据的形式添加头信息
public interfaceHttpList {
@POST("test/logout_test")
Call logout2(@Header("content") String content);
}
android retrofit入门,Android开发 retrofit入门讲解相关推荐
- python语言入门w-1Python开发——基础入门
基础入门 变量 命名规则 变量名通常由字母,数字,下划线组成; 数字不能作为变量名开头; 不能以python中的关键字命名; 变量名要有意义; 不要用汉字和拼音去命名; 变量名要区分大小写; 推荐使用 ...
- 收藏 | Android开发从入门到精通系列书籍资料最全攻略!!!(最新更新)
很多人会私信给我提问,问安卓的学习路线是什么,因为之前没有写过系统的路线图,于是近期花了一些时间,把这块的知识,做成一个体系分享给大家,也算是自己在安卓这边做的一份贡献. 关于安卓如何来学习,安卓入门 ...
- android 开发从入门到精通
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...
- Android(安卓)开发零基础入门课程【笔记】
此文章是根据B站的视频教程整理总结的笔记,用白话说明一些Android开发的入门知识,共勉. B站教程链接:https://www.bilibili.com/video/BV13y4y1E7pF?p= ...
- 《 Android物联网开发从入门到实战》
今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...
- 30天入门 Android 开发, Google 与你一起圆梦
在美国,几个朋友聚在一块儿拿着吉他等乐器一同练习演奏叫做 Jam Together,因此 Google Study Jam 名称的意义是一群人聚集在一起进行 Google 技术的学习和创作.--程路 ...
- 视频教程-快速入门Android开发 视频 教程 android studio-Android
快速入门Android开发 视频 教程 android studio 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我 ...
- Android开发从入门到精通教程大总结(源码,教程,面试题,书籍,视频)
老罗: http://blog.csdn.net/column/details/androidluo.html http://xiaozu.renren.com/xiaozu/100692/3569 ...
- Android开发从入门到精通
Android开发从入门到精通 --Android经典教程 目 录 目 录 1 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和And ...
最新文章
- 在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数
- 查看您的Solr缓存大小:Eclipse Memory Analyzer
- [转载] linux cgroup
- nginx配置详解1
- 最大值_期末C语言特辑 计算一维数组中最大值
- 港顺计算机怎么放音乐,csgo怎么放歌 CSGO内置语音播放歌曲
- 工具类:获取两个经纬度的距离(米)
- WPS Office V15.3.2绿化版免费下载
- 法律养成——刑法(一)
- Android控件绑定menu键
- word转换为图片格式的几种方式
- 2007 合成孔径雷达成像算法与实现 各figure的matlab实现(第三章 - 图3.2)
- -webkit-touch-callout禁止长按菜单
- Java OpenCV 图像处理34 图形图像 分水岭 watershed
- open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存
- 一劳永逸的解除ByondCompare4注册问题
- 5.42如何高效的学习开源项目
- OllyDbg断点详解
- 力扣OJ(1401-1500)
- 生成式 AI 与强人工智能:探索 AI 技术的未来