• 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());
    }
    });
    }
    ---------------------
    作者:快逃
    来源:CSDN
    原文:https://blog.csdn.net/kuaittao/article/details/77946787
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    笑话几则
    .net 知识点滴
    LoadRunner本机录制http协议程序遇到的问题以及解决方法
    40款非常棒的 jQuery 插件和制作教程(系列二)
    50个极佳的企业网站案例
    jQuery ui effects
    9个优秀网上免费标签云生成工具
    30 +创意的登录页面设计灵感
    分享一个jQuery的时间轴插件:TimergliderJS
    36个非常有趣的互动网站设计作品范例
  • 原文地址:https://www.cnblogs.com/weizhxa/p/9875569.html
Copyright © 2020-2023  润新知