RxJava+Retrofit+Gson實現網路請求

Dusan_杜小菜發表於2016-05-05

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,歡迎交流。

相關文章