RxJava+Retrofit+Gson+okHttp完美组合

RxJava+Retrofit+Gson+okHttp完美组合,真的是太强大了,实现网络请求那是so easy。简洁,高效,扩展性强。对这些框架还不熟悉的,感觉去自学撸代码。

可以看我前几篇文章:
1,搭建本地server,响应Android客户端HTTP请求
2,OKHTTP实战
3,Retrofit2.0+网络框架HTTP实战
先贴RxJava+Retrofit代码,有空再来分享。

一,apiService接口:

1
2
3
4
5
6
7
public interface OairApiService {
@GET("getwifi")
Call<OairWifiBean> getWifiInfo();//普通的retrofit
@GET("getwifi")
Observable<OairWifiBean> getOairWifiInfo();//RxJava
}

二,实现异步get请求,并实现json的封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* 获取设备的wifi信息
*/
private void getOairWifiInfo(final String ip_address) {
String baseUrl = ip_address+"cgi-bin/";
LogUtils.debug(TAG,"baseUrl= "+baseUrl);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
OairApiService apiService = retrofit.create(OairApiService.class);
apiService.getOairWifiInfo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<OairWifiBean>() {
@Override
public void onCompleted() {
ll_init_loading.setVisibility(View.GONE);
LogUtils.debug(TAG,"onCompleted");
}
@Override
public void onError(Throwable e) {
LogUtils.debug(TAG,"error="+ip_address+e.toString());
}
@Override
public void onNext(OairWifiBean oairWifiBean) {
LogUtils.debug(TAG,"result="+oairWifiBean.toString());
//
}
});
}

三,对json封装,返回javaBean对象

自己根据后台提供的json数据,封装javaBean,本例中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{"result":0,"result_msg":"succ", "data":{"ssid":"DuQian+2016","encryption":"psk2","key":"12345678"}}
public class OairWifiBean implements Serializable {
public int result;
public String result_msg;
public WifiInfo data;
public class WifiInfo{
public String ssid;//wifi名称
public String encryption;//加密方式
public String key;//wifi密码
}
@Override
public String toString() {
return "OairWifiBean{" +
"result=" + result +
", result_msg='" + result_msg + '\'' +
", data=" + data +
'}';
}
}

get请求后,经过Gson解析,返回OairWifiBean对象,toString结果:

1
result=OairWifiBean{result=0, result_msg='succ', data=WifiInfo{ssid='DuQian+2016', encryption='psk2', key='12345678'}}

四,总结

本文只是以一个简单的demo为例,介绍了retrofit+Rxjava+Gson+OKHttp的完美结合使用,简单大气上档次。很多实用的功能, 未完待续,杜乾,Dusan,Q 291902259,欢迎交流。