Retrofit是Square公司出品的基于OkHttp封装的一套RESTful(目前流行的一套api设计的风格)网络请求框架。它内部使用了大量的设计模式,以达到高度解耦的目的;它可以直接通过注解的方式配置请求;可以使用不同的Http客户端;还可以使用json Converter序列化数据,直接转换成你期望生成的实体bean;它还支持Rxjava和LiveData等等等
Rxjava2和LiveData是利用Retrofit2的使用来返回独立的对象处理
LiveData + ViewModel替代Rxjava2,但缺少一些Rxjava2没有的功能,如Stream,Rxjava2中缺少关于LiveData中
LiveData 算是一个数据持久类
Rxjava2 有链式响应请求的过程
组合方式
1、Retrofit 单独请求
2、Retrofit+RxJava实现网络请求,返回的是Observable
3、Retrofit+LiveData实现网络请求,返回的是LiveData
以上请求加上OkHttpClient,可以进行请求拦截处理和超时等设置(超时时间设置生不生效不好说)
Retrofit的创建方式一样,只是ApiService中接口返回不一样
基本形式
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://fanyi.youdao.com/") //设置网络请求的Url地址
.addConverterFactory(GsonConverterFactory.create()) //设置数据解析器
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
返回形式:
@GET("xxxxx")
Call<DataBean> getDataBeanObservable();
@GET("xxxxx")
LiveData<DataBean> getDataBeanLiveData();
@GET("xxxxx")
Observable<DataBean> getDataBeanObservable();
Retrofit + LiveData
RetrofitManager.get("https://cn.bing.com/")
.create(SplashService.class)
.getBingImgLiveData().observe(this, new Observer<BingImg>() {
@Override
public void onChanged(BingImg bingImg) {
Log.d(TAG, "onChanged: 请求结果:"+new Gson().toJson(bingImg));
}
});
Retrofit请求分为同步请求和异步请求
写法《一》:单纯使用Retrofit,不加Rxjava的使用
/**
* 描述:第一步:定义一个接口配置网络请求
*/
public interface Weath