最近项目里要用到网络 框架,这个3组合最近比较火,我也拿来试试水;得出以下几点个人看法;
像android、iOS 客户端 上的应用,离开网络 立马就缺少了灵气,本来一个鲜活的应用,如花朵一样盛放着,他需要网络的支持,服务器的培育;
问题:如图所示
请求地址: http://apis.juhe.cn/cook/query.php
分别单独使用 OkHttp3、Retrofit2、RxJava,然后在合起来使用,通过这样的方式来 认识 这个组合;
首先要知道 OkHttp3、Retrofit2、 都是网络请求库
一、OkHttp3
简单使用方式:
这是我们从网络请求到数据 、在放UI的一般操作,这是OkHttp3的单独使用方式
a、 OkHttpClient client=new OkHttpClient();//通过他来发送请求,接受响应
b、 //请求 、采用get请求 、请求一个url 搞定:
http://apis.juhe.cn/cook/query.php?key=""
Request request=new Request.Builder().url(url).build();
c、 //执行
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
d、//请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//请求完成 成功
e、 //转model
response---》model
f、 //放在UI上
}
});
上面我们看到了okhttp 请求 一般做这几部
1、请求 地址 参数
2、响应
{ 成功: a、son-》model 转模型
b、到UI主线程更新UI
}
二、Retrofit2
Retrofit2的使用大大简化了 我们okhttp 的使用,我的理解Retrofit2的诞生就是为了简化okhttp而来,他的使用依赖okhttp,是依赖关系
1、Retrofit2使用
a、//Retrofit 创建 设置基本的 url 服务器地址
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://apis.juhe.cn/")
.build();
b、//请求 请求单独的写在接口里面
public interface IHttpServiceRequest {
//获取菜单接口
@GET("/cook/query.php")
Call getFood(@Query("key")String key);
c、执行请求
IHttpServiceRequest service retrofit.create(IHttpServiceRequest.class);
}
三、RxJava
RxJava就是处理异步的一个库,最基本是基于观察者模式来实现的。通过Obserable和Observer的机制,实现所谓响应式的编程体验。 RxAndroid是RxJava在Android上的一个扩展;
也就是说,利用Obserable和Observer 我们可以很好的实现异步请求;
在android中、凡是与 UI相关的操作必须放到主线程。而我们往往会将耗时的操作、比如网络请求、放到子线程去处理,处理完后又要更新UI,这时候RxAndroid就派上了用场,具体的使用,这里就不说了,可以参考http://blog.csdn.net/chen_zhang_yu/article/details/52900725这个文档;
这三者、也可以说成是两者、一个是网络请求、一个是处理异步 更新UI;第一个OkHttp3可以单独使用、Retrofit2的使用建立在OkHttp3的基础上,RxJava也可以单独使用;
由于网络需求、以及异步更新、这三者可以结合在一起使用;但是这里要警记:任何第三库的出现,它是专门为解决某一个问题而产生的,也就是它并不完全的适用于任何场景,如果想要提高自己的应用的质量,还需思考清楚我们的应用需求,跟第三库的能力是否吻合,或者吻合成度有多高,这些都是需要考虑进去的,不要一味的因为其流行,就非要强制我们的应用中使用;