RxJava+Retrofit+Gson实现网络请求

RxJava+Retrofit+Gson+okHttp完美组合,真的是太强大了,实现网络请求那是so easy。简洁,高效,扩展性强。对这些框架还不熟悉的,感觉去自学撸代码。
可以看我前几篇文章:
1,搭建本地server,响应Android客户端HTTP请求
2,OKHTTP实战
3,Retrofit2.0+网络框架HTTP实战
先贴RxJava+Retrofit代码,有空再来分享。

一,apiService接口:

public interface OairApiService {
    @GET("getwifi")
    Call<OairWifiBean> getWifiInfo();//普通的retrofit

    @GET("getwifi")
    Observable<OairWifiBean> getOairWifiInfo();//RxJava
}

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

 /** * 获取设备的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,本例中:

{"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结果:

result=OairWifiBean{result=0, result_msg=’succ’, data=WifiInfo{ssid=’DuQian+2016’, encryption=’psk2’, key=’12345678’}}
“`

四,总结

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

你可能感兴趣的:(android,gson,okhttp,retrofit,rxjava)