Android网络框架系列: Retrofit2.5(1)

简介: Retrofit是Square公司开发的一款针对Android网络请求的框架,遵循Restful设计风格,我们查看 invoke 可以发现:底层基于OkHttp实现的,相比其他网络请求框架,有以下优势:性能最好,速度最快(动态代理优势)简洁易用,代码简化解耦彻底,职责细分易与其他框架联用(Rxjava)

1681486351352.png

引言

  Retrofit是Square公司开发的一款针对Android网络请求的框架,遵循Restful设计风格,我们查看 invoke 可以发现:底层基于OkHttp实现的 ,相比其他网络请求框架,有以下优势:

  • 性能最好,速度最快(动态代理优势)
  • 简洁易用,代码简化
  • 解耦彻底,职责细分
  • 易与其他框架联用(Rxjava)

当然也有弊端:因为高度封装,相对于 OkHttp ,扩展性变差了,不过整体能满足项目需求.今天我就带大家来看一下Retrofit究竟是如何使用,以及内部工作原理

一.概述

1681486403331.png

作用

  OKHttp 做的更加简洁,更加方便,同时影藏了oKHttp的某些功能。

type-safe

   retrofit是基于okhttp的,因此retrofit所有的工作都是围绕在请求体和响应体来展开的,Retrofit提供了各种类型的转换器以及可以自定义转换器,去构建你的请求体,以及通过转换器去序列化响应体为你想要的类型,从而保证你的请求体和响应体都是安全的

二.使用

1. 添加 retrofit 依赖
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
2. 添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
3. 创建实体类

  访问 小木箱 github 仓库,通过get请求得到了以下报文:

1681486531698.png

然后,通过 Gsonformat 得到相关实体类对象:

class MicroKibacoRepo {
   private int id;
   private String node_id;
   private String name;
   private String full_name;
  // ---为了避免浪费篇幅,省略无用代码--- 
}
4. 创建⼀一个 interface 作为 Web Service 的请求集合,在⾥里⾯⽤注解(Annotation)写⼊需要配置的请求方法
public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<MicroKibacoRepo>> listRepos(@Path("user") String user);
}
5. 在正式代码里⽤ Retrofit 创建出 interface 的实例
  Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.github.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
GitHubService service = retrofit.create(GitHubService.class);
6. 调⽤创建出的 Service 实例的对应⽅法,创建出相应的可以⽤来发起网络请求的 Call 对象
 Call<List<MicroKibacoRepo>> repos = service.listRepos("MicroKibaco");
7. 使用 Call.execute() 或者 Call.enqueue() 来发起请求
    repos.enqueue(new Callback<List<MicroKibacoRepo>>() {
            @Override
            public void onResponse(Call<List<MicroKibacoRepo>> call, Response<List<MicroKibacoRepo>> response) {
            }
            @Override
            public void onFailure(Call<List<MicroKibacoRepo>> call, Throwable t) {
            }
        });

三. Retrofit常用API

1681486697647.png

1681486739052.png


相关文章
|
3天前
|
SQL 缓存 安全
Android ORM 框架之 greenDAO
Android ORM 框架之 greenDAO
38 0
|
3天前
|
Android开发
Android网络访问超时
Android网络访问超时
12 2
|
3天前
|
Java Linux API
统计android设备的网络数据使用量
统计android设备的网络数据使用量
16 0
|
3天前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
141 2
|
1天前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
|
1天前
|
安全 网络协议 网络安全
OWASP Top 10 网络安全10大漏洞——A01,源码+原理+手写框架
OWASP Top 10 网络安全10大漏洞——A01,源码+原理+手写框架
|
1天前
|
关系型数据库 MySQL 网络安全
Docker部署MySQL,2024网络安全通用流行框架大全
Docker部署MySQL,2024网络安全通用流行框架大全
|
2天前
|
设计模式 算法 Android开发
2024年Android网络编程总结篇,androidview绘制流程面试
2024年Android网络编程总结篇,androidview绘制流程面试
2024年Android网络编程总结篇,androidview绘制流程面试
|
2天前
|
开发框架 架构师 安全
android快速开发框架,建议收藏
android快速开发框架,建议收藏
|
3天前
|
存储 网络协议 Linux
RTnet – 灵活的硬实时网络框架
本文介绍了开源项目 RTnet。RTnet 为以太网和其他传输媒体上的硬实时通信提供了一个可定制和可扩展的框架。 本文描述了 RTnet 的架构、核心组件和协议。
19 0
RTnet – 灵活的硬实时网络框架