由于Android课程项目需要,特地查阅了okHttp的使用,发现网上找的大多和自己的需求不一样。所以就着团队项目需要,自己简单封装了一个okHttp的get和post请求。
话不多说,直接看代码吧!
一、前期需要用到的属性封装
private static Request request = null;
private static Call call = null;
private static int TimeOut = 120;
//单例获取ohttp3对象
private static OkHttpClient client = null;
/**
* OkHttpClient的构造方法,通过线程锁的方式构造
* @return OkHttpClient对象
*/
private static synchronized OkHttpClient getInstance() {
if (client == null) {
client = new OkHttpClient.Builder()
.readTimeout(TimeOut, TimeUnit.SECONDS)
.connectTimeout(TimeOut, TimeUnit.SECONDS)
.writeTimeout(TimeOut, TimeUnit.SECONDS)
.build();
}
return client;
}
/**
* callback接口
* 异步请求时使用
*/
static class MyCallBack implements Callback {
private OkHttpCallback okHttpCallBack;
public MyCallBack(OkHttpCallback okHttpCallBack) {
this.okHttpCallBack = okHttpCallBack;
}
@Override
public void onFailure(Call call, IOException e) {
okHttpCallBack.onFailure(e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
okHttpCallBack.onSuccess(response);
}
}
/**
* 获得同步get请求对象Response
* @param url
* @return Response
*/
private static Response doSyncGet(String url) {
//创建OkHttpClient对象
client = getInstance();
request = new Request.Builder()
.url(url)//请求链接
.build();//创建Request对象
try {
//获取Response对象
Response response = client.newCall(request).execute();
return response;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 获得异步get请求对象
* @param url 请求地址
* @param callback 实现callback接口
*/
private static void doAsyncGet(String url,OkHttpCallback callback) {
MyCallBack myCallback = new MyCallBack(callback);
client = getInstance();
request = new Request.Builder()
.url(url)
.get()
.build();
client.newCall(request).enqueue(myCallback);
}
其中,OKHttpCallback接口为:
import java.io.IOException;
import okhtt