Rxjava Retrofix2 okhttp3网络框架自解

来源:互联网 发布:安卓浏览器查看源码 编辑:程序博客网 时间:2024/06/06 07:07

直接代码


类一

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());        }    });}

原创粉丝点击