前言

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入门讲解相关推荐

  1. python语言入门w-1Python开发——基础入门

    基础入门 变量 命名规则 变量名通常由字母,数字,下划线组成; 数字不能作为变量名开头; 不能以python中的关键字命名; 变量名要有意义; 不要用汉字和拼音去命名; 变量名要区分大小写; 推荐使用 ...

  2. 收藏 | Android开发从入门到精通系列书籍资料最全攻略!!!(最新更新)

    很多人会私信给我提问,问安卓的学习路线是什么,因为之前没有写过系统的路线图,于是近期花了一些时间,把这块的知识,做成一个体系分享给大家,也算是自己在安卓这边做的一份贡献. 关于安卓如何来学习,安卓入门 ...

  3. android 开发从入门到精通

    Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...

  4. Android(安卓)开发零基础入门课程【笔记】

    此文章是根据B站的视频教程整理总结的笔记,用白话说明一些Android开发的入门知识,共勉. B站教程链接:https://www.bilibili.com/video/BV13y4y1E7pF?p= ...

  5. 《 Android物联网开发从入门到实战》

    今天小编分享的这本书是国内第一本Android物联网开发书籍,由42个全真实战案例,环环相扣,深入解析Android物联网开发. <Android物联网开发从入门到实战>内容分为 5篇,共 ...

  6. 30天入门 Android 开发, Google 与你一起圆梦

    在美国,几个朋友聚在一块儿拿着吉他等乐器一同练习演奏叫做 Jam Together,因此 Google Study Jam 名称的意义是一群人聚集在一起进行 Google 技术的学习和创作.--程路 ...

  7. 视频教程-快速入门Android开发 视频 教程 android studio-Android

    快速入门Android开发 视频 教程 android studio 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我 ...

  8. Android开发从入门到精通教程大总结(源码,教程,面试题,书籍,视频)

    老罗:  http://blog.csdn.net/column/details/androidluo.html http://xiaozu.renren.com/xiaozu/100692/3569 ...

  9. Android开发从入门到精通

    Android开发从入门到精通 --Android经典教程 目 录 目 录 1 第一章 什么是Android 1 什么是Android - 嵌入式设备编程的历史-第一章(1) 1 开放手机联盟和And ...

最新文章

  1. 在qt中用c语言数组,在QT函数中返回一个数组/把一个数组传参给函数
  2. 查看您的Solr缓存大小:Eclipse Memory Analyzer
  3. [转载] linux cgroup
  4. nginx配置详解1
  5. 最大值_期末C语言特辑 计算一维数组中最大值
  6. 港顺计算机怎么放音乐,csgo怎么放歌 CSGO内置语音播放歌曲
  7. 工具类:获取两个经纬度的距离(米)
  8. WPS Office V15.3.2绿化版免费下载
  9. 法律养成——刑法(一)
  10. Android控件绑定menu键
  11. word转换为图片格式的几种方式
  12. 2007 合成孔径雷达成像算法与实现 各figure的matlab实现(第三章 - 图3.2)
  13. -webkit-touch-callout禁止长按菜单
  14. Java OpenCV 图像处理34 图形图像 分水岭 watershed
  15. open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存
  16. 一劳永逸的解除ByondCompare4注册问题
  17. 5.42如何高效的学习开源项目
  18. OllyDbg断点详解
  19. 力扣OJ(1401-1500)
  20. 生成式 AI 与强人工智能:探索 AI 技术的未来

热门文章

  1. 关于asp.net2.0资源文件本地化多语言版本的一些小技巧
  2. Go报错:more than one character in rune literal
  3. Python学习笔记:进程和线程(承)
  4. 详解C与C++的联系与区别
  5. malloc 不能返回动态内存
  6. 嵌入式深度学习运用的思路
  7. 使用Opencv的一些注意事项
  8. 云炬60s看世界20211128
  9. 有机发光二极管显示器测试方法_有机激光二极管从梦想变为现实
  10. 系统间通信1:阻塞与非阻塞式通信B