一般网路请求流程
- 开始、配置网络请求参数
- 创建请求
- 发送请求
- 收到服务器响应
- 解析处理数据
- 结束
Retrofit网络请求流程
- 开始、配置网络请求参数
- 创建网络请求对象
- 适配到具体的Call
- 发送网络请求
- 服务器响应、解析数据
- 切换线程、处理最终数据
- 结束
OkHttp网络请求流程
- 开始、创建Client
- 创建Request
- 创建Call
- 执行Call
- 收到服务器响应
- 解析处理数据
- 结束
开始、创建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()}")