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
- retrofit2拦截器和请求封装
- android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
- RxJava2+Retrofit2实现网络请求和解析封装
- Retrofit2 封装统一请求参数
- OkHttp二次封装请求 拦截器
- 自定义拦截器封装公共请求参数
- Retrofit2.0和它的拦截器们
- rxjava2+rxandroid2+retrofit2 封装网络请求
- Retrofit2+Rxjava2网络请求框架的封装
- retrofit2拦截器处理401
- retrofit2.0 OkHttpClient--拦截器
- Retrofit+okhttp3的简单封装实现网络请求和拦截
- retrofit2.0使用拦截器Interceptor统一打印请求与响应的json
- retrofit2.0使用拦截器Interceptor统一打印请求与响应的json
- Retrofit2的get请求和post请求
- Retrofit2的get请求和post请求
- OkHttp中Interceptor拦截器之公共参数请求封装
- 自定义的拦截器,封装公共参数 get请求
- 自定义实现跑马灯
- input type date 解决移动端显示placeholder.
- 《蟾宫曲》
- redis问题总汇
- [OC]之 atomic 与 nonatomic的区别
- retrofit2拦截器和请求封装
- 【Leetcode】:238. Product of Array Except Self 问题 in JAVA
- KMP算法学习文档
- 秒杀系统架构分析与实战
- Spring事务管理
- python中正则表达式
- 《采桑子》
- [线段树]分数修改
- vim命令