Android源码分析-OkHttp-3-简单流程描述

131 阅读1分钟

一般网路请求流程

  1. 开始、配置网络请求参数
  2. 创建请求
  3. 发送请求
  4. 收到服务器响应
  5. 解析处理数据
  6. 结束

Retrofit网络请求流程

  1. 开始、配置网络请求参数
  2. 创建网络请求对象
  3. 适配到具体的Call
  4. 发送网络请求
  5. 服务器响应、解析数据
  6. 切换线程、处理最终数据
  7. 结束

OkHttp网络请求流程

  1. 开始、创建Client
  2. 创建Request
  3. 创建Call
  4. 执行Call
  5. 收到服务器响应
  6. 解析处理数据
  7. 结束
开始、创建Client

open class OkHttpClient :Cloneable,Call.Factory,WebSocket.Factory

Factory for calls, which can be used to send HTTP requests and read their responses.

请求管理客户端,用于发送HTTP请求以及读取响应。 每个Client示例单独维护自己的连接池和线程池,重用连接和线程可减少延迟并节省内存

//使用默认设置创建一个Client
val client = OkHttpClient()
创建Request请求体
var request = Request.Builder().url("${baseurl}/okhttpget").build()
创建Call
val newCall = client.newCall(request)
执行Call
newCall.enqueue(callback)
收到服务器响应
val callback = object :Callback{
    override fun onFailure(call: Call, e: IOException) {
        e.printStackTrace()
    }
    override fun onResponse(call: Call, response: Response) {
    }
}
解析处理数据
if (!response.isSuccessful) throw IOException("Unexpected code $response")
for ((name, value) in response.headers) {
    println("name: $name, value: $value")
}
println("response: ${response.body?.string()}")
结束