Rxjava Retrofix2 okhttp3网络框架自解

直接代码


类一

public class Okhttp3Utils {
    private static OkHttpClient mOkHttpClient;
    public static OkHttpClient getOkHttpClient(){
        if(null==mOkHttpClient){
            mOkHttpClient=new OkHttpClient.Builder()
                    .connectTimeout(10, TimeUnit.SECONDS)
                    .readTimeout(30,TimeUnit.SECONDS)
                    .writeTimeout(30,TimeUnit.SECONDS)
                    .build();
        }
        return mOkHttpClient;
    }
}
类二
public abstract  class RetrofitUtils {
    private static  final String Api_Server="http://xxxxxxxxx:8080/";
    private static Retrofit mRetrofit;
    private static OkHttpClient nOkHttpClient;
    public static Retrofit getRetrofit(){
        if(null==mRetrofit){
            if(null==nOkHttpClient){
                nOkHttpClient=Okhttp3Utils.getOkHttpClient();
            }
            mRetrofit=new Retrofit.Builder()
                    .baseUrl(Api_Server)//设置服务器路径
                    .addConverterFactory(GsonConverterFactory.create())//添加转化库,默认是Gson
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//添加回调库,采用RxJava
                    .client(nOkHttpClient)//设置使用okhttp网络请求
                    .build();
        }
        return mRetrofit;
    }
}
类三
public class NetWorks extends RetrofitUtils {
    //创建实现接口调用
    protected static final NetService service = getRetrofit().create(NetService.class);
 
    private  interface  NetService{
        //POST请求
        @FormUrlEncoded
        @POST("login/urls")
        Observable<Verification> getVerfcationCodePost(@Field("tel") String tel,@Field("password") String pass);
        
        //POST请求
        @FormUrlEncoded
        @POST("login/urls")
        Observable<Verification> getVerfcationCodePostMap(@FieldMap Map<String, String> map);

        //GET请求
        @GET("login/urls")
        Observable<Verification> getVerfcationGet(@Query("tel") String tel, @Query("password") String pass);

        //GET请求,设置缓存
        @Headers("Cache-Control: public," + CACHE_CONTROL_CACHE)
        @GET("login/urls")
        Observable<Verification> getVerfcationGetCache(@Query("tel") String tel, @Query("password") String pass);

        //POST测试
        @FormUrlEncoded
        @POST("api/out/directBuy.php?act=DirectBuy")
        Observable<GoodsBean> getVerfcationCodePostMap2(@FieldMap Map<String, String> map);
    }
    //POST  测试
    public static void VisitCodePostMapText(Map<String,String> map, Observer<GoodsBean> observer){
        setSubscribe(service.getVerfcationCodePostMap2(map),observer);
    }

    //POST 请求
    public static void VisitCodePost(String tel, String password, Observer<Verification> observer){
        setSubscribe(service.getVerfcationCodePost(tel,password),observer);
    }

    //POST 请求参数以map传入
    public static void VisitCodePostMap(Map<String,String> map, Observer<Verification> observer){
        setSubscribe(service.getVerfcationCodePostMap(map),observer);
    }

    //GET 请求设置缓冲
    public static void VisitCodeGetCache(String tel, String password, Observer<Verification> observer){
        setSubscribe(service.getVerfcationGetCache(tel,password),observer);
    }

    //GET 请求
    public static void VisitCodeGET(String tel, String password, Observer<Verification> observer){
        setSubscribe(service.getVerfcationGet(tel,password),observer);
    }

    public static <T> void setSubscribe(Observable<T> observable, Observer<T> observer){
        observable.subscribeOn(Schedulers.io())
                .subscribeOn(Schedulers.newThread())//子线程访问
                .subscribeOn(Schedulers.newThread())//回调到主线程
                .subscribe(observer);
    }
}
类四
Activity直接掉用
private void text(){
    Map<String, String> jsonMap = new HashMap<>();
    jsonMap.put("u", "a");
    jsonMap.put("p", "b");
    jsonMap.put("id", "97");
    NetWorks.VisitCodePostMapText(jsonMap, new Observer<GoodsBean>() {
        @Override
        public void onCompleted() {
            Log.d("Main2Activity", "==onCompleted==");
        }
        @Override
        public void onError(Throwable e) {
            Log.d("Main2Activity", "==onError=="+e.toString());
        }
        @Override
        public void onNext(GoodsBean goodsBean) {
            Log.d("Main2Activity", "==verification=="+goodsBean.toString());
        }
    });
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值