简单使用OkHttp3
阅读本文需要对OkHttp3的使用有一定了解。
首先我们先看看如何简单进行一个get请求的Request。
Request qqRequest = new Request.Builder()
.url("http://www.qq.com")
.build();
Call call = mOkHttp.newCall(qqRequest);
call.execute();//特别注意 这里要在子线程执行
或者可以使用:
Request qqRequest = new Request.Builder()
.url("http://www.qq.com")
.build();
Call call = mOkHttp.newCall(qqRequest);
//使用enquue
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.i(TAG, response.body().string());
}
});
execute执行流程源代码分析
要看execute就要先看
Call call = mOkHttp.newCall(qqRequest);
点进去源代码我们发现 返回了一个RealCall对象,因为Call是一个接口,而RealCall才是真正的实现类
/**
* Prepares the {@code request} to be executed at some point in the future.
*/
@Override
public Call newCall(Request request) {
return new RealCall(this, request);
}
现在我们找到execute方法的源代码:
@Override