OkHttpClient+Retrofit+RxJava工具类

    //retrofit依赖
    implementation 'com.squareup.retrofit2:retrofit:2.0.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
//Rxjava依赖
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'io.reactivex:rxjava:1.2.1'

工具类

package com.example.demo4.Utils;

import com.example.demo4.Api.Api;
import com.example.demo4.Api.ApiSerVice;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.OkHttpClient;
import okhttp3.ResponseBody;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * @Auther: luck
 * @Date: 2019/3/19 10:36:04
 * @Description:
 */
public class Ustils {


    private final ApiSerVice myService;

    private Ustils(){
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        //okhttp
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .writeTimeout(10,TimeUnit.SECONDS)
                .readTimeout(10,TimeUnit.SECONDS)
                .connectTimeout(10,TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .build();
        Retrofit retrofit = new Retrofit.Builder()
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(Api.ApiBanner)
                .client(okHttpClient)
                .build();
        myService = retrofit.create(ApiSerVice.class);
    }

    public static Ustils getInstance() {
        return RetrofitHolder.UTIL;
    }
    private static class RetrofitHolder{
        private static final Ustils UTIL=new Ustils();
    }

    public Ustils doGet(String url){
        myService.doGet1(url).observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                 .subscribe(observer);
        return Ustils.getInstance();
}

    private Observer observer=new Observer<ResponseBody>() {
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {
            if (httpListener!=null){
                httpListener.failure(e.getMessage());
            }
        }

        @Override
        public void onNext(ResponseBody responseBody) {
            if (httpListener!=null){
                try {
                    httpListener.success(responseBody.string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    };

    public interface HttpListener{
        void success(String result);
        void failure(String error);
    }
    private HttpListener httpListener;
    public void setHttpListener(HttpListener httpListener){
        this.httpListener=httpListener;
    }

}

Api类 建议用分割线结尾

  //Banner接口
	 //public static final  =“ http://172.17.8.100/”
    public static final String ApiBanner="http://172.17.8.100/small/commodity/v1/";
    public static final String ApiBanner2="bannerShow";

动态代理类

  //============改这了
    @GET
    Observable<ResponseBody> doGet1(@Url String url);

Model调用

package com.example.demo4.Model;

import com.example.demo4.Api.Api;
import com.example.demo4.Api.ApiSerVice;
import com.example.demo4.Bean.BannerBean;
import com.example.demo4.Bean.ShowBean;
import com.example.demo4.Utils.Ustils;
import com.google.gson.Gson;

import java.util.List;

import okhttp3.Callback;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * @Auther: luck
 * @Date: 2019/3/18 15:34:27
 * @Description:
 */
public class Model implements ModelContract{




   @Override
    public void getBannerData(final Callback callback) {
       Ustils.getInstance().doGet(Api.ApiBanner2).setHttpListener(new Ustils.HttpListener() {
           @Override
           public void success(String result) {
               Gson gson = new Gson();
               BannerBean bannerBean = gson.fromJson(result, BannerBean.class);
               List<BannerBean.ResultBean> result1 = bannerBean.getResult();
               callback.onsuess(result1);
           }

           @Override
           public void failure(String error) {

           }
       });




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值