这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

作者博客

http://www.jianshu.com/u/383970bef0a0

文章目录

  1. 前言

  2. 简介

  3. 与其他开源请求库对比

  4. 使用介绍

    1. 添加Retrofit库的依赖

    2. 创建接收服务器返回数据 的类

    3. 创建用于描述网络请求 的接口

      1. 注解类型

      2. 注解说明

        1. 网络请求方法

        2. 标记

        3. 网络请求参数

      3. 汇总

    4. 创建Retrofit 实例

    5. 创建网络请求接口实例

    6. 发送网络请求(异步 / 同步)

    7. 处理返回数据

  5. 实例讲解

    1. 实例1(get)

    2. 实例2(post)

  6. Retrofit 的拓展使用

  7. 总结

1

前言

  • Android开发中,网络请求十分常用

  • 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 今天,我将献上一份非常详细Retrofit v2.0的使用教程,希望你们会喜欢。

如果对Retrofit v2.0的源码感兴趣,可看文章:Android:手把手带你深入剖析 Retrofit 2.0 源码

2

简介

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

特别注意:

  • 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装。

  • 原因:网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作

  • 在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,Retrofit根据用户的需求对结果进行解析

3

与其他开源请求库对比

除了Retrofit,如今Android中主流的网络请求框架有:

  • Android-Async-Http

  • Volley

  • OkHttp

下面是简单介绍:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

一图让你了解全部的网络请求库和他们之间的区别!

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

4

 使用介绍

使用 Retrofit 的步骤共有7个:

步骤1:添加Retrofit库的依赖
步骤2:创建 接收服务器返回数据 的类
步骤3:创建 用于描述网络请求 的接口
步骤4:创建 Retrofit 实例
步骤5:创建 网络请求接口实例 并 配置网络请求参数
步骤6:发送网络请求(异步 / 同步)

    封装了 数据转换、线程切换的操作

步骤7: 处理服务器返回的数据

接下来,我们一步步进行讲解。

步骤1:添加Retrofit库的依赖

1. 在 Gradle加入Retrofit库的依赖

 build.gradle

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

2. 添加 网络权限
AndroidManifest.xml

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤2:创建 接收服务器返回数据 的类

Reception.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤3:创建 用于描述网络请求 的接口

Retrofit将 Http请求 抽象成 Java接口:采用 注解 描述网络请求参数 和配置网络请求参数

  1. 用 动态代理 动态 将该接口的注解“翻译”成一个 Http 请求,最后再执行 Http 请求

  2. 注:接口中的每个方法的参数都需要使用注解标注,否则会报错

GetRequest_Interface.interface

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

下面详细介绍Retrofit 网络请求接口 的注解类型。

注解类型

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

注解说明

第一类:网络请求方法

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

详细说明:
a. @GET、@POST、@PUT、@DELETE、@HEAD
以上方法分别对应 HTTP中的网络请求方式

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

此处特意说明URL的组成:Retrofit把 网络请求的URL 分成了两部分设置:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 网络请求的完整 Url =在创建Retrofit实例时通过.baseUrl()设置 +网络请求接口的注解设置(下面称 “path“ )

  • 具体整合的规则如下:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

建议采用第三种方式来配置,并尽量使用同一种路径形式。

 

b. @HTTP

  • 作用:替换@GET、@POST、@PUT、@DELETE、@HEAD注解的作用 及 更多功能拓展

  • 具体使用:通过属性method、path、hasBody进行设置

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

第二类:标记

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

a. @FormUrlEncoded

  • 作用:表示发送form-encoded的数据

每个键值对需要用@Filed来注解键名,随后的对象需要提供值。

b. @Multipart

  • 作用:表示发送form-encoded的数据(适用于 有文件 上传的场景)

每个键值对需要用@Part来注解键名,随后的对象需要提供值。

具体使用如下:
GetRequest_Interface

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

第三类:网络请求参数

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

详细说明

a. @Header & @Headers

  • 作用:添加请求头 &添加不固定的请求头

  • 具体使用如下:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

b. @Body

  • 作用:以 Post方式 传递 自定义数据类型 给服务器

  • 特别注意:如果提交的是一个Map,那么作用相当于 @Field

不过Map要经过 FormBody.Builder 类处理成为符合 Okhttp 格式的表单,如:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

c. @Field & @FieldMap

  • 作用:发送 Post请求 时提交请求的表单字段

  • 具体使用:与 @FormUrlEncoded 注解配合使用

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

d. @Part & @PartMap

  • 作用:发送 Post请求 时提交请求的表单字段

    与@Field的区别:功能相同,但携带的参数类型更加丰富,包括数据流,所以适用于 有文件上传 的场景

  • 具体使用:与 @Multipart 注解配合使用

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

e. @Query和@QueryMap

  • 作用:用于 @GET 方法的查询参数(Query =  Url 中 ‘?’ 后面的 key-value)

    如:url = http://www.println.net/?cate=android,其中,Query = cate

  • 具体使用:配置时只需要在接口方法中增加一个参数即可:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

f. @Path

  • 作用:URL地址的缺省值

  • 具体使用:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

g. @Url

  • 作用:直接传入一个请求的 URL变量 用于URL设置

  • 具体使用:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

汇总

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤4:创建 Retrofit 实例

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

a. 关于数据解析器(Converter)

  • Retrofit支持多种数据解析方式

  • 使用时需要在Gradle添加依赖

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

b. 关于网络请求适配器(CallAdapter)

  • Retrofit支持多种网络请求适配器方式:guava、Java8和rxjava

    使用时如使用的是 Android 默认的 CallAdapter,则不需要添加网络请求适配器的依赖,否则则需要按照需求进行添加
    Retrofit 提供的 CallAdapter

  • 使用时需要在Gradle添加依赖:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤5:创建 网络请求接口实例

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤6:发送网络请求(异步 / 同步)

封装了 数据转换、线程切换的操作

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤7:处理返回数据

通过response类的 body()对返回的数据进行处理

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

5

实例讲解

接下来,我将用两个实例分别对 Retrofit GET方式 和 POST方式进行 网络请求 讲解。

实例1

  • 实现功能:将中文翻译成英文

  • 实现方案:采用Get方法对 金山词霸API 发送网络请求

采用 Gson 进行数据解析

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 步骤说明

步骤1:添加Retrofit库的依赖
步骤2:创建 接收服务器返回数据 的类
步骤3:创建 用于描述网络请求 的接口
步骤4:创建 Retrofit 实例
步骤5:创建 网络请求接口实例 并 配置网络请求参数
步骤6:发送网络请求(采用最常用的异步方式)

封装了 数据转换、线程切换的操作

步骤7: 处理服务器返回的数据

接下来,我们一步步进行讲解。

  • 具体使用

步骤1:添加Retrofit库的依赖

1. 在 Gradle加入Retrofit库的依赖

build.gradle

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

2. 添加 网络权限
AndroidManifest.xml

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤2:创建 接收服务器返回数据 的类

金山词霸API 的数据格式说明如下:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 根据 金山词霸API 的数据格式,创建 接收服务器返回数据 的类:

Translation.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤3:创建 用于描述网络请求 的接口

采用 注解 描述 网络请求参数。
GetRequest_Interface.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

接下来的步骤均在GetRequest.java内实现(看注释)

步骤4:创建Retrofit对象
步骤5:创建 网络请求接口 的实例
步骤6:发送网络请求

以最常用的 异步请求 为例

步骤7:处理返回数据

GetRequest.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

由于此处采用了 Gson 解析,所以需要在 Gradle加入依赖
build.gradle

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

运行结果

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

Demo地址

Carson_Ho的Github:https://github.com/Carson-Ho/RetrofitDemo

实例2

  • 实现的功能:将 英文 翻译成 中文

  • 实现方法:采用Post方法对 有道API 发送网络请求

采用 Gson 进行数据解析

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 使用步骤

步骤1:添加Retrofit库的依赖
步骤2:创建 接收服务器返回数据 的类
步骤3:创建 用于描述网络请求 的接口
步骤4:创建 Retrofit 实例
步骤5:创建 网络请求接口实例 并 配置网络请求参数
步骤6:发送网络请求(采用最常用的异步方式)

封装了 数据转换、线程切换的操作

步骤7: 处理服务器返回的数据

接下来,我们一步步进行Retrofit的使用。

  • 具体使用

步骤1:添加Retrofit库的依赖

1. 在 Gradle加入Retrofit库的依赖

build.gradle

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

2. 添加 网络权限
AndroidManifest.xml

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤2:创建 接收服务器返回数据 的类

API 的数据格式说明如下:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

  • 根据 有道API 的数据格式,创建 接收服务器返回数据 的类:

Translation.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

步骤3:创建 用于描述网络请求 的接口

采用 注解 描述 网络请求参数。

PostRequest_Interface.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

接下来的步骤均在PostRequest.java内实现(看注释)

步骤4:创建Retrofit对象
步骤5:创建 网络请求接口 的实例
步骤6:发送网络请求

以最常用的 异步请求 为例

步骤7:处理返回数据

PostRequest.java

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

由于此处采用了 Gson 解析,所以需要在 Gradle 加入依赖
build.gradle

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

运行结果

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

Demo地址

Carson_Ho的Github:

https://github.com/Carson-Ho/RetrofitDemo

6

Retrofit 的拓展使用

  • Retrofit的使用场景非常丰富,如支持RxJavaPrototocobuff

  • 具体设置也非常简单 & 方便:

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

7

总结

点击阅读原文可以看到原文

相关推荐

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)

Android:深入剖析 Retrofit 2.0 源码

这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)