retrofit2拦截器和请求封装

来源:互联网 发布:淘宝客服基础培训知识 编辑:程序博客网 时间:2024/06/08 09:25

retrofit2封装方法1-----比较渣,只是记录,后期优化

package cn.yuebai.yuebaidealer.config;import android.content.Context;import android.text.TextUtils;import java.io.File;import java.io.IOException;import java.util.concurrent.TimeUnit;import okhttp3.Cache;import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.logging.HttpLoggingInterceptor;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;/** * User: ZhiyaZhao(zhiyazhao@126.com) * Date: 2016-04-15 * parma: 09:49 * FIXME */public abstract class BaseApi extends RuntimeException {    private static final OkHttpClient.Builder mHttpClientBuilder = new OkHttpClient.Builder();    private static Retrofit mRetrofit;    protected static    Retrofit getRetrofit(Context context) {        if (mRetrofit == null) {            //设定30秒超时,拦截http请求进行监控重写或重试,打印网络请求            mHttpClientBuilder.connectTimeout(AppConfig.CONNECT_TIME_OUT, TimeUnit.SECONDS)//                    .interceptors().add(//                    new Interceptor() {//                        @Override//                        public Response intercept(Chain chain) throws IOException {//                            Request originalRequest = chain.request();////                            String cacheHeaderValue = isOnline(context) ?//                                    "public, max-age=2419200" : "public, only-if-cached, max-stale=2419200" ;////                            Request request = originalRequest.newBuilder().build();//                            Response response = chain.proceed(request);//                            return response.newBuilder().removeHeader("Pragma").removeHeader("Cache-Control")//                                    .header("Cache-Control", cacheHeaderValue).build();//                        }//                    }//            ).//                    .addInterceptor(new Interceptor() {//                        @Override//                        public Response intercept(Chain chain) throws IOException {//                            Request request = chain.request();//                            HttpUrl url = request.url().newBuilder().addQueryParameter(MovieDbApi.PARAM_API_KEY, BuildConfig.MOVIE_DB_API_KEY).build();//                            request = request.newBuilder().url(url).build();////                            return chain.proceed(request);//                        }//                    })//                    .networkInterceptors().add(new PersistentCookieStore(context))//                    .addInterceptor(interceptor)//                    .addInterceptor(new Interceptor() {//                @Override//                public Response intercept(Chain chain) throws IOException {//                    Request request = chain.request()//                            .newBuilder()//                            .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")//                            .addHeader("Accept-Encoding", "gzip, deflate")//                            .addHeader("Connection", "keep-alive")//                            .addHeader("Accept", "*/*")//                            .addHeader("Cookie", "add cookies here")//                            .build();//                    return chain.proceed(request);//                }//            })//                    .interceptors().add(new CookiesInterceptor(context).REWRITE_CACHE_CONTROL_INTERCEPTOR)                    .cache(new Cache( new File(context.getCacheDir()                            .getAbsolutePath(), AppConfig.OKHTTP_CACHE_DIR), AppConfig.MAX_CACHE_SIZE_INBYTES))                    .interceptors().add(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY));            OkHttpClient mOkHttpClient = mHttpClientBuilder.build();            //构建Retrofit            mRetrofit = new Retrofit.Builder()                    //配置服务器路径                    .baseUrl(AppConfig.BASE_URL)                    //配置转化库,默认是Gson                    .addConverterFactory(GsonConverterFactory.create())                    //配置回调库,采用RxJava                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                    //设置OKHttpClient为网络客户端                    .client(mOkHttpClient)                    .build();        }        return mRetrofit;    }    static  Interceptor interceptor = new Interceptor() {        @Override        public Response intercept(Chain chain) throws IOException {            Request request = chain.request();            Response response = chain.proceed(request);            String cacheControl = request.cacheControl().toString();            if (TextUtils.isEmpty(cacheControl)) {                cacheControl = "public, max-age=60";            }            return response.newBuilder()                    .header("Cache-Control", cacheControl)                    .removeHeader("Pragma")                    .build();        }    };}


1 0
原创粉丝点击