「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」
OkHttp:An HTTP+HTTP/2 client for Android and Java applications.
- 基础知识
1.1 简单介绍
OkHttp是一个比较火的Http连接工具三方库,可以说是为高效而生,使用时也是比较简洁方便。
当下普遍使用的是OkHttp3,此版本与之前的OkHttp版本相比有了较大的改进,文章内容的实现都是基于OkHttp3版本。
1.2 引入依赖
使用OkHttp需要引入相关的maven依赖信息:
1 | xml复制代码<!--OkHttp3--> |
- 常用类对象
2.1 OkHttpClient对象
使用HTTP工具时,总是少不了创建Client对象来完成相关功能,OkHttp3中需要创建的是一个OkHttpClient对象,创建时可以直接使用构造函数来创建对象;或者使用OkHttp3提供的建造者模式来创建并返回一个对象。
1 | java复制代码//①使用构造函数初始化 |
两种对象的创建方法本质上是相通的,
- 使用构造函数创建时,会默认创建一个建造者对象并作为参数传入,以此来创建OkHttpClient对象;
- 使用建造者模式创建时,也是首先创建一个建造者对象,并调用build()方法把自身传入来返回OkHttpClient对象。
1 | java复制代码//①使用构造函数 |
2.2 Request对象
Request对象是进行HTTP请求时的请求对象,该类在OkHttp3中同样是使用了建造者模式的思想来创建一个请求对象,创建时操作的是Request类中的Builder内部类,并通过Builder内部类将属性传递给Request对象,创建时默认请求类型是GET请求。
1 | java复制代码//建造者模式创建请求对象,默认是GET请求 |
如果想要自定义请求类型,Request类中提供了method()方法可以指定请求类型,同时对于常用的请求方式还做了进一步封装,如可以调用.post()方法以POST类型发送请求。
1 | java复制代码//method方法设置请求方式 |
指定请求路径可以使用Request对象的url()
方法,该方法可以传入一个字符串或URL对象。
1 | java复制代码//通过url方法对建造者对象的url属性赋值,其他方法都是间接调用该方法 |
除了设置请求类型和路径的方法之外,Request类中还提供了设置请求头部信息的方法
1 | java复制代码//设置请求头 |
2.3 Response对象
Response对象是HTTP请求后的响应对象,Response类在OkHttp3中同样是使用了建造者模式。
在HTTP的响应Response对象中,常用的操作就是从响应结果中获取响应数据,Response对象中提供了body()方法来获取响应结果中的响应体内容。
1 | java复制代码//获取相应体 |
- 请求流程
3.1 GET请求
使用OkHttp工具进行GET请求流程如下
- 创建OkHttpClient对象
- 创建Request请求对象,并设置请求类型、请求路径、参数等信息
- 使用OkHttpClient对象执行Request请求对象,并使用Response对象接收返回结果
- 从返回结果中获取解析返回数据
代码实现流程可以表示为:
1 | java复制代码//①创建OkHttpClient对象 |
3.2 POST请求
POST请求与GET相比,大多数时候都会提交一定的数据信息,流程可以表示为
- 创建OkHttpClient对象
- 创建请求体对象信息
- 创建Request请求对象,并设置请求类型为post并携带需要提交的请求体信息、请求路径、头部参数等信息
- 使用OkHttpClient对象执行Request请求对象,并使用Response对象接收返回结果
- 从返回结果中获取解析返回数据
具体实现代码为:
1 | java复制代码//①创建OkHttpClient对象 |
本文转载自: 掘金