retrofit2拦截器处理401
来源:互联网 发布:centos 7 1708怎么样 编辑:程序博客网 时间:2024/06/11 10:11
在使用retrofit 请求的时候如果遇到了401怎么办?在每个请求之后都处理?那么这个就比较麻烦。我们可以在获取retrofit之前加入Interceptor,在1.9之前你可以使用RequestInterceptor来拦截一个请求,但在2.0这个被取消,现在我们必须转而使用okHttp的Interceptor。
public WebService getmWebService() { if (mWebService == null) { initOkHttpInterceptor();//okhttp的拦截器 retrofit = new Retrofit.Builder() .baseUrl(UrlConstant.BASE_URL) .client(client)L .addConverterFactory(GsonConverterFactory.create()) .build(); mWebService = retrofit.create(WebService.class); } return mWebService; }
private void initOkHttpInterceptor() { Interceptor mTokenInterceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); if ( token == null) {//表示第一次登陆还没拉取过token return chain.proceed(originalRequest);//执行登陆的操作 } //此处表示已有token 这时只需要判断401即可 Request authorised = originalRequest.newBuilder() .header("Authorization", token)//此处的token 是你保存在本地的 .build(); Response response = chain.proceed(authorised);//执行此次请求 if (response.code() == 401) {//返回为token失效 refreshToken();//重新获取token,此处的刷新token需要同步执行以防止异步到来的问题 Request newRequest = originalRequest.newBuilder() .header("Authorization", token) .build();// return chain.proceed(newRequest); } return response; } }; client = new OkHttpClient.Builder() .retryOnConnectionFailure(true) .connectTimeout(15, TimeUnit.SECONDS) .addInterceptor(mTokenInterceptor) .build(); }
0 0
- retrofit2拦截器处理401
- retrofit2.0 OkHttpClient--拦截器
- retrofit2拦截器和请求封装
- Retrofit2,okhttp3 通过拦截器进行缓存
- 关于Retrofit2的两种拦截器
- Retrofit2.0和它的拦截器们
- 拦截器处理类
- springmvc拦截器处理
- Retrofit2,okhttp3 通过拦截器(Interceptor)两种缓存(离线和在线)
- android RxJava+Retrofit2.0 OkHttp添加日志拦截器和设置请求头
- retrofit2.0使用拦截器Interceptor统一打印请求与响应的json
- retrofit2.0使用拦截器Interceptor统一打印请求与响应的json
- SpringMvc拦截器登录处理
- 拦截器拦截 ajax代码,以及乱码处理
- 网络框架拦截的处理方式 网络拦截器
- Retrofit2
- retrofit2
- Retrofit2
- coreldrawX6实例视频教程
- 19.选项卡
- PHP CGI、FastCGI、PHP-fpm
- 洛谷P1118 数字三角形
- jdk6中的jps,jstack,jmap,jhat,jconsole命令
- retrofit2拦截器处理401
- Mysql 的引擎类型MyISAM、InnoDB介绍及变更
- ChucK初步(11)
- Android简介
- 完美解决Genymotion无法使用adb命令的问题
- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
- Linux最大线程数限制及当前线程数查询
- mobiscroll自定义年月日选择的应用
- 以SYSTEM用户运行CMD