zoukankan      html  css  js  c++  java
  • RxJava+Retrofit实现网络请求

    RxJava+Retrofit实现网络请求:

    首先要添加依赖

      compile 'io.reactivex:rxjava:x.y.z'
      compile 'io.reactivex:rxandroid:1.0.1'
      compile 'com.squareup.retrofit2:retrofit:2.0.2'
      compile 'com.squareup.retrofit2:converter-gson:2.0.2'
      compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'

    1、创建Retrofit请求的网络接口

    public interface RetrofitAPI {
    
        //登录
        @FormUrlEncoded
        @POST(Constant.LOGIN)
        Observable<Responseinfo<LoginBean>> setLogin(@Field("mobile") String phone, @Field("pwd") String pwd);
    
    
        //注册
        @FormUrlEncoded
        @POST(Constant.REGISTE)
        Observable<Responseinfo<RegisteBean>> getUserId(@Field("mobile") String id, @Field("pwd") String token, @Field("channel") int channel);
    }

    2、创建Retrofit和RxJava的对象

    public class RetrofitHelper {
        //设置网络请求默认的超时时间
        private static final int DEFAULT_TIME_OUT = 10;
        private static Retrofit sRetrofit;
        private static OkHttpClient sOKHttpClient;
    
        public static RetrofitAPI getRetrofitAPI(){
            return getInstance().create(RetrofitAPI.class);
        }
    
        public static Retrofit getInstance(){
            if(sRetrofit== null){
                synchronized (RetrofitHelper.class){
                    if(sRetrofit == null){
                        sRetrofit = new Retrofit.Builder()
                                .baseUrl(Constant.BASEURL)
                                .addConverterFactory(GsonConverterFactory.create())
                                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                                .client(getsOKHttpClient())
                                .build();
    
                    }
                }
            }
    
            return sRetrofit;
        }
    
    
        public static OkHttpClient getsOKHttpClient(){
            if(sOKHttpClient == null){
                synchronized (RetrofitHelper.class){
                    if(sOKHttpClient == null){
                        sOKHttpClient = new OkHttpClient.Builder()
                                .connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                                .readTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                                .writeTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS)
                                .build();
                    }
                }
            }
    
            return sOKHttpClient;
        }
    
    }

    3、开启网络请求

    private void requestLoginNet(String mobile, String pwd) {
            //登录的接口
            RetrofitHelper.getRetrofitAPI()
                    .setLogin(mobile, pwd)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<Responseinfo<LoginBean>>() {
                        @Override
                        public void onCompleted() {
    
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                        }
    
                        @Override
                        public void onNext(Responseinfo<LoginBean> response) {
                            if (response == null){
                                return;
                            }
                            int result = response.getResult();
                        }
                    });
    
        }
  • 相关阅读:
    Interleaving String
    Binary Tree Inorder Traversal
    Unique Binary Search Trees II
    Unique Binary Search Trees
    .Net(C#)访问X509证书加密的Webservice(六)--WSE 2来订制web service
    UpdatePanel控件
    在InfoPath中如何获取user profle
    Sharepoint Webpart 自定义属性
    Sharepoint 服务端对象模型增加项到文档库
    从Sharepoint的List中获取不重复的item
  • 原文地址:https://www.cnblogs.com/yegong0214/p/7574493.html
Copyright © 2011-2022 走看看