先看OkHttp内部相关类图
通常请求:
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.get()
.url("")
.build();
try {
Response response = okHttpClient.newCall(request).execute();
ResponseBody responseBody = response.body();
if (responseBody != null) {
String result = responseBody.string();
}
} catch (IOException e) {
e.printStackTrace();
}
核心模块说明:
一、OkHttpClient
OkHttp对外的入口,可以理解为OkHttp的平台,其定义了网络协议、dns、请求时间等
二、Call
网络请求的执行者,enqueue为异步请求需要传入OkHttpCallBack,exexute()为同步请求,直接返回Response
三、Request
网络请求信息的封装类,内置URL、Head、请求方式method、请求参数RequestBody
四、Response
Call执行的结果,exexute()则直接返回,enqueue()则在OkHttpCallBack中。
问题:OkHttpClient、Call、Request、Response的关系
Call call = OkHttpClient.newCall(Request request);
Response response = call.execute();// enqueue在OkHttpCallBack中
整体路线:OkHttpClient.Builder 生成 OkHttpClient,再创建Request作为生成Call的参数,最后发起请求call.execute()。返回值是Response