OkHttpPlus介绍
项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus
主要功能:OkHttp封装,支持GET、POST、UI线程回调、JSON格式解析、链式调用、小文件上传下载及进度监听等功能
为什么要写这么一个库呢?
首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习。
其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作View的话,需要自己转换到UI线程,非常繁琐,所以需要封装。也有将OkHttp作为Volley底层Http实现的用法,发送请求、维护请求队列用的是Volley,实际的Http请求用的是OkHttp。
关于Volley和oOkHttp结合的Demo请戳煎蛋项目
如何使用
初始化
你可以在Application里面完成初始化,因为对OkHttp的封装主要使用的是代理设计模式,使用OkHttpProxy.getInstance()
可以获取到单例客户端,你可以像没封装之前一样,设置任意的参数,比如下面就设置超时时间和忽略HTTPS认证。
public class OkApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
OkHttpClient okHttpClient = OkHttpProxy.getInstance();
okHttpClient.setConnectTimeout(10, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(15, TimeUnit.SECONDS);
okHttpClient.setWriteTimeout(15, TimeUnit.SECONDS);
//ignore HTTPS Authentication
okHttpClient.setHostnameVerifier(new MyHostnameVerifier());
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]{
new MyTrustManager()}, new SecureRandom());
okHttpClient.setSslSocketFactory(sc.getSocketFactory());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
}
}
Get方法
你大多数情况下是和OkHttpProxy这个代理类打交道,而且OkHttpPlus支持链式调用,内部采用Builder设计模式,所以你可以像下面这样使用
OkHttpProxy.get()
.url(URL_USER)
.tag(this)
.execute(new OkCallback<User>(new OkJsonParser<User>() {
}) {
@Override
public void