RxJava与Retrofit封装简单的网络请求(二)

本文属于作者学习Rxjava的第二篇,进行了一些简单的封装。

Retrofit一款基于Android的网络请求框架,底层基于Okhttp,被谷歌官方认可,最好的解释。
RxJava在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库),我个人感觉在于异步的操作,切换线程的方便,以及代码逻辑的简单。在比较复杂的逻辑中,Rxjava的代码依然简单易懂。

接口

Retrofit调用网络请求需要封装出一个接口,采用Get方式请求网络,不同的是这里返回的是一个Observable对象,getLoginInfo登录方法,QueryMap 请求的键值对的设置。不懂得可以去看一下
Retrofit的基本用法,

public interface WorkerApis {

public static String apis="接口请自己选择";

@GET("接口")
Observable<List<LoginBean>> getLoginInfo(@QueryMap HashMap<String,String> map);

}

Retrofit请求

addConverterFactory添加解析方式,addCallAdapterFactory与Rxjava进行关联,client设置一些OkhttpClient的网络请求参数设置,可以不设置

  public Retrofit getRetrofit(){

    retrofit=new Retrofit.Builder()
            .baseUrl(WorkerApis.apis)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .client(getOkHttpClient())
            .build();

    return retrofit;
}

public OkHttpClient getOkHttpClient(){

    OkHttpClient okHttpClient=new OkHttpClient();

    //设置超时时间
    okHttpClient.newBuilder().connectTimeout(10, TimeUnit.SECONDS);

    return  okHttpClient;
}
网络请求

通过Rxjava的观察者模式可以很方便的切换线程,执行请求

   workerApis=retrofitRequest.getRetrofit().create(WorkerApis.class);
    workerApis.getLoginInfo(map)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(subscriber);
Activity中的请求

最后送上activity中的全部代码,很简单。

public class MainActivity extends AppCompatActivity {

public RxJavaRequest rxJavaRequest;

public Button button;

public TextView textview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    rxJavaRequest=new RxJavaRequest();


    button= (Button) findViewById(R.id.button);
    textview= (TextView) findViewById(R.id.textview);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            HashMap<String,String> map=new HashMap<>();
            map.put("j_username","**********");
            map.put("j_password","******");

            rxJavaRequest.getRequestDatas(map, new RxCallback<List<LoginBean>>() {
                @Override
                public void onSuccess(List<LoginBean> loginBeen) {

                    textview.append("onSuccess");
                    textview.append("\n");
                    textview.append(loginBeen.get(0).getMessage());
                }

                @Override
                public void onFails(Throwable t) {

                    textview.append("onFails");
                    textview.append("\n");

                }
            });

        }
    });

}
}

想看代码的,可以直接点击:link text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值