一、简介
OKHttp是一个处理网络请求的开源项目,是Android 当前最火热网络框架,由 Square 公司负责开发和维护,我们经常使用的另外一个开源网络请求库Retrofit,它其实就是基于OKHttp来实现,对OKHttp进行再次封装。
git源码地址:
https://github.com/square/okhttp
二、简单使用
OKHttp发起网络请求,具有同步和异步两种请求方式,下面来看看具体的代码。
private OkHttpClient mClient;
private Request mRequest;
private void initData(){
mClient = new OkHttpClient.Builder().readTimeout(5, TimeUnit.SECONDS).build();
mRequest = new Request.Builder().url("http://www.baidu.com").get().build();
}
1)同步方式
private void synOkHttpTest(){
Call call = mClient.newCall(mRequest);
Response response = null;
try {
response = call.execute();
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
2)异步方式
private void asynOkHttpTest(){
System.out.println(Thread.currentThread().getName());
Call call = mClient.newCall(mRequest);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println(e.toString());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 在子线程中执行
System.out.println(Thread.currentThread().getName());
System.out.println(response.body().string());
}
});
}
通过代码可以发现,无论是同步请求或是异步请求,在创建Client和Request对象都是相同的,甚至在创建Call对象都是相同的,通过Call对象调用execute方法即发起同步请求,调用enqueue方法发起异步请求。同时需要注意的是Call对象调用对应的方法都只能调用一次,当同一个Call对象调用方法两次时,就抛出异常,这个通过阅读对应的源码也能发现。
以上,便是对OkHttp最简单的使用,下面会不定期更新其他一些方法的使用。