目录
一、Retrofit是什么?
Retrofit是一个基于OKHttp的RESTful网络请求框架,由Square公司开源,专为Android和Java提供类型安全的HTTP客户端。它可以理解为OKHttp的加强版,底层封装了OKHttp,主要负责网络请求接口的封装,使得网络请求工作更加简洁高效。
简单来说,Retrofit是OkHttp的封装,但他没有任何的网络请求功能,他只是对请求前,请求后的数据过程进行封装,网络请求功能还是在OkHttp里面。
二、为什么会出现Retrofit?它的作用是什么?
2.1 OkHttp使用上的缺陷
以前我们使用OKHttp发起请求,需要创建request,指定域名等等,每次发送请求,都需要些一大堆的内容。不够简单,不够复用。比如下面的代码,每次发送请求,都需要我们写一次Request。并且请求回来的内容,我们都需要对Response进行解析转换。
val client = OkHttpClient()//1. 每次请求都需要创建request来指定url,参数等。val request = Request.Builder().url(url).build()var startTime = System.currentTimeMillis() client.newCall(request).enqueue(object : Callback {override fun onFailure(call: Call, e: IOException) {val endTime = System.currentTimeMillis()val duration = endTime - startTimecallback(null, duration) e.printStackTrace()}override fun onResponse(call: Call, response: Response) {val endTime = System.currentTimeMillis()val duration = endTime - startTimeif (response.isSuccessful) {// 2. 读取响应体,并且是Response类型的,还需要进行解析,我们希望能够得到指定类型的bean。response.body?.string()?.let { responseBody ->callback(responseBody, duration) }} else {callback