简要请求的代码如下:
Request mRequest = new Request.Builder().url("www.baidu.com").get().build();
Call call = client.newCall(mRequest);
//同步请求
call.execute();
同步请求会阻塞线程,直到请求有了结果。Android主线程中不适用该请求方式,子线程中会较少的使用到。
//异步请求
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
这里需要注意的是:onFailure和onResponse方法都是在子线程里面执行的,执行完成后,无论结果是成功还是失败,他都会调用Dispatcher这个调度分发器进行线程切换。有子线程切换到主线程并调用Callback把请求结果回调回来。至于Dispatcher是如何进行分发和调度的,我们后面再分析。