RxJava和Retrofit和MVP和OkHttp的简单封装

RetrofitHelper

public class RetorfitHelper {
    private final OkHttpClient okHttpClient;
    static RetorfitHelper retorfitHelper;
    private Retrofit retrofit;

    private RetorfitHelper() {
        okHttpClient= OkHttpUtil.getInstance().getOkHttpClient();
    }

    public static RetorfitHelper getInstance(){
        if(retorfitHelper==null){
            synchronized (RetorfitHelper.class){
                if(retorfitHelper==null){
                    retorfitHelper=new RetorfitHelper();
                }
            }
        }
        return retorfitHelper;
    }

    public Retrofit getRetrofit() {
        retrofit=new Retrofit.Builder()
                .baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(okHttpClient)
                .build();
        return retrofit;
    }

    public static<T> T getService(Class<T> clazz){
        return  RetorfitHelper.getInstance().getRetrofit().create(clazz);
    }
}
 
 
 
 

AbstractObserver

 
  
public abstract class AbstractObserver<T> implements Observer<T> {

    public abstract void onSuccess(T t);
    public abstract void onFailure();

    @Override
    public void onSubscribe(Disposable d) {

    }

    @Override
    public void onNext(T value) {
        onSuccess(value);
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {

    }
}

OkHttpUtil

 
  
public class OkHttpUtil {

    static OkHttpUtil okHttpUtil;
    private OkHttpClient okHttpClient;

    private OkHttpUtil() {
            okHttpClient=new OkHttpClient.Builder()
                    .readTimeout(5000, TimeUnit.SECONDS)
                    .connectTimeout(5000,TimeUnit.SECONDS)
                    .addInterceptor(new CommonInterceptor())
                    .build();
    }

    public static OkHttpUtil getInstance(){
        if(okHttpUtil==null){
            synchronized (OkHttpUtil.class){
                if(okHttpUtil==null){
                    okHttpUtil=new OkHttpUtil();
                }
            }
        }
        return okHttpUtil;
    }


    public OkHttpClient getOkHttpClient() {
        return okHttpClient;
    }

    //公共参数拦截器(source=android)
    class CommonInterceptor  implements Interceptor{

        @Override
        public Response intercept(Chain chain) throws IOException {
            //获取原先的请求
            Request originalRequest = chain.request();
            //重新构建url
            HttpUrl.Builder builder = originalRequest.url().newBuilder();
            //如果是post请求的话就把参数重新拼接一下,get请求的话就可以直接加入公共参数了
            if(originalRequest.method().equals("POST")){
                FormBody body = (FormBody) originalRequest.body();
                for(int i = 0; i < body.size();i++){
                    Log.i("RequestFatory",body.name(i) + "---" + body.value(i));
                    builder.addQueryParameter(body.name(i),body.value(i));
                }
            }
            //这里是我的2个公共参数
            builder.addQueryParameter("source","android");
            //新的url
            HttpUrl httpUrl = builder.build();
            Request request = originalRequest.newBuilder()
                    .method(originalRequest.method(),originalRequest.body())
                    .url(httpUrl).build();
            return chain.proceed(request);
        }
    }
}


 
 


猜你喜欢

转载自blog.csdn.net/owen_bland/article/details/80360476