Android Retrofit2&OkHttp3添加统一的请求头Header
2017-07-20 10:57
363 查看
在使用Retrofit时,有时候需要设置Set-Cookie等请求头,如果每一个url都需要,那么直接来个拦截器就好了.
让所有网络请求都附上你的 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); } };
完整用法:
public class HttpUtils { private String token = null; private static HttpUtils self = new HttpUtils(); private HttpUtils() { } public static HttpUtils getInstance() { return self; } public <T> T createRequest(Class<? extends T> t) { Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd hh:mm:ss") .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BaseConstant.BASE_REQUEST_URL) .client(genericClient()) .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); return retrofit.create(t); } //统一拦截器 private OkHttpClient genericClient() { UserModel user = (UserModel) ACache.getAsObject("user"); if (user == null) { token = ""; } else { token = user.getToken(); } return new OkHttpClient.Builder() .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request() .newBuilder() .addHeader("Authorization", token) .build(); return chain.proceed(request); } }) .build(); } public MultipartBody.Part createMultipartBody(String key, String fileName, File source) { RequestBody file = RequestBody.create(MediaType.parse(BaseConstant.APPLICATION_OCTET_STREAM), source); return MultipartBody.Part.createFormData(key, fileName, file); } }
相关文章推荐
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Android Retrofit2&OkHttp3添加统一的请求头Header
- Retrofit,Okhttp对每个Request统一动态添加header和参数(五)
- Retrofit,Okhttp对每个Request统一动态添加header和参数(五)
- Retrofit,Okhttp对每个Request统一动态添加header和参数
- Retrofit,Okhttp对每个Request统一动态添加header和参数(五)
- Android 给Retrofit2和OkHttp3添加统一的请求头Header
- 关于请求添加HttpRequestHeader
- 网络请求数据添加到列表(okhttp+RecyclerView)
- android,retrofit,okhttp,日志拦截器,使用拦截器Interceptor统一打印请求与响应的json
- 联网请求统一加上header
- HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射
- HTTP请求Header详解
- 关于Retrofit2+Okhttp3实现统一添加请求参数和重定向
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互
- Http请求之基于HttpUrlConnection,支持Header,Body传值,支持Multipart上传文件:
- okhttp初体现(okhttp的get请求的使用)