Android OAuth2.0 令牌过期自动刷新

说明:

做项目Spotify 实现OAuth2.0登录  根据API进行数据获取、交互等,获取的令牌有效期只有30分钟,令牌失效那么API获取数据就会失败,这就要实现令牌过期自动刷新功能了。另外API中接口使用了POST、GET、PUT、DELETE等请求方式,我们不可能每次都要去写这些不同网络请求,于是有了封装网络请求通吃POST、GET、PUT、DELETE等请求方式并实现自动刷新令牌

代码其中第一个没有传入Context上下文参数的是不带菊花的,因为有时候需要直接加载或者默默加载数据,第二种是带菊花的提示用户,菊花下面默认的是"",也就是没写loading...这种。

/**
 * SptNetwork
 * Create by lxy on 2021/5/17 3:32 PM
 * Copyright © 2021 lxy. All rights reserved.
 **/
public class SptNetwork {

    public static final String GET = "get";
    public static final String POST = "post";
    public static final String DELETE = "delete";
    public static final String PUT = "put";

    /**
     * 网络请求封装 使用拦截器
     *
     * @param url      网络地址
     * @param json     参数String
     * @param type     类型 get、post、put、delete
     *                 //     * @param isShowDialog 是否展示菊花
     *                 //     * @param context      上下文
     * @param listener 回调
     */
    public static void Request(String url, String json, String type, HttpListener listener) {
        OkHttpClient http = new OkHttpClient().newBuilder().
                addInterceptor(new OAuthRequestInterceptor())
                .connectTimeout(15, TimeUnit.SECONDS)
                .readTimeout(30, TimeUnit.SECONDS)
                .writeTimeout(30, TimeUnit.SECONDS)
                .build();
        Request.Builder builder = null;
        if (type.equals(GET)) {
            builder = new Request.Builder().get();
        } else if (type.equals(POST)) {
            RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
            builder = new Request.Builder().post(requestBody);
        } else if (type.equals(PUT)) {
            RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
            builder = new Request.Builder().put(requestBody);
        } else if (type.equals(DELETE)) {
            RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
            builder = new Request.Builder().delete(requestBody);
        }
        final Request request = builder
                .url(url)
                .addHeader("Authorization", "Bearer " + SptConfig.session().access_token)
                .build();
        Call call = http.newCa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值