Android 给Retrofit2和OkHttp3添加统一的请求头Header
2017-08-17 10:36
771 查看
本文原创作者:一叶飘舟 作者博客地址:http://blog.csdn.net/jdsjlzx
在使用Retrofit时,有时候需要设置Set-Cookie等请求头,如果每一个url都需要,那么直接来个拦截器就好了。
官方说明:
OkHttp3下OkHttpClient的 List< Interceptor> interceptors()方法,返回的是一个不可编辑的列表,如果对其进行编辑会报出UnSupportedOperationException
Interceptor的典型使用场景,就是对request和response的Headers进行编辑
如图:
注意Header头,不要照抄,要灵活运用。
让所有网络请求都附上你的 token:
为OkHttpClient 添加两个以上的拦截器,如下代码所示:
下面来个完整的配置:
在使用Retrofit时,有时候需要设置Set-Cookie等请求头,如果每一个url都需要,那么直接来个拦截器就好了。
官方说明:
OkHttp3下OkHttpClient的 List< Interceptor> interceptors()方法,返回的是一个不可编辑的列表,如果对其进行编辑会报出UnSupportedOperationException
Interceptor的典型使用场景,就是对request和response的Headers进行编辑
如图:
注意Header头,不要照抄,要灵活运用。
让所有网络请求都附上你的 token:
Interceptor mTokenInterceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); if (Your.sToken == null || alreadyHasAuthorizationHeader(originalRequest)) { return chain.proceed(originalRequest); } Request authorised = originalRequest.newBuilder() .header("Authorization", Your.sToken) .build(); return chain.proceed(authorised); } };
为OkHttpClient 添加两个以上的拦截器,如下代码所示:
public class RestDataSource implements Repository { private final MarvelService mMarvelService; @Inject public RestDataSource() { // Log信息 HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC); // 公私密匙 MarvelSigningInterceptor signingInterceptor = new MarvelSigningInterceptor( BuildConfig.MARVEL_PUBLIC_KEY, BuildConfig.MARVEL_PRIVATE_KEY); // OkHttp3.0的使用方式 OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(signingInterceptor) .addInterceptor(loggingInterceptor) .build(); // 选择人物信息 Gson customGsonInstance = new GsonBuilder() .registerTypeAdapter(new TypeToken<List<AvengersCharacter>>() { }.getType(), new MarvelResultsDeserializer<AvengersCharacter>()) .create(); // 适配器 Retrofit marvelApiAdapter = new Retrofit.Builder() .baseUrl(MarvelService.END_POINT) .addConverterFactory(GsonConverterFactory.create(customGsonInstance)) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(client) .build(); // 服务 mMarvelService = marvelApiAdapter.create(MarvelService.class); } // 返回人物信息 @Override public Observable<List<AvengersCharacter>> getCharacters(int currentOffset) { return mMarvelService.getCharacters(currentOffset); } }
下面来个完整的配置:
import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import retrofit2.Retrofit; public class RetrofitAPIManager { public static final String SERVER_URL = "url"; public static ClientAPI provideClientApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl(SERVER_URL) .client(genericClient()) .build(); return retrofit.create(ClientAPI.class); } public static OkHttpClient genericClient() { OkHttpClient httpClient = new OkHttpClient.Builder() .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); } }) .build(); return httpClient; } }
相关文章推荐
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- 利用okhttp3 给Retrofit2添加统一请求头 以及设置请求超时时间
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android用OKHttp进行数据请求时,统一给所有接口添加某个请求参数
- Android Retrofit2&OkHttp3添加统一的请求头Header
- android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
- android webview内的post请求(点击按钮)添加header行不通
- Retrofit2 动态(静态)添加请求头Header
- Android Retrofit2 动态(静态)添加请求头Header
- okhttp中get请求添加map类型的header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- okhttp3+retrofit2进行HTTP请求以及设置请求超时示例
- Android使用okhttpfinal+gson实现网络请求
- Android技术选型:你该选择哪个网络请求开源库(Volley、OkHttp、Retrofit)?
- Android 优雅的为RecyclerView添加HeaderView和FooterView
- Android 5.X新特性之为RecyclerView添加HeaderView和FooterView
- Android okHttp网络请求之Retrofit+Okhttp组合(五)
- [置顶] 【Android okhttp源码解析 三】异步请求流程和源码分析
- Android OkHttp网络请求