Volley请求Cookie超时/Token认证失效的处理

一般App端请求应该用Token做认证吧,并且Token时间设置较长时间。这样本地不存储用户信息,保证安全。
但是由于网页版已有代码限制,这里用了Cookie做认证,网页端设了30分钟超时,不可能在App上30分钟后让用户重新登录。

没用Volley之前,是用自己封装的HttpURLConnection,当Cookie超时时,可以读到401的状态吗,然后用保存在本地的用户名和密码(本地加密处理过,但……)登录一次,获取到Cookie后再把之前的请求重新进行一次。

换成Volley后,看了下源码,可以写在RetryPolicy里

public class MyRetryPolicy extends DefaultRetryPolicy {

    public static final int RETRY_COUNT = 3;
    public static final int TIMEOUT_MS = 8000;

    @Override
    public int getCurrentRetryCount() {
        return RETRY_COUNT;
    }
    @Override
    public int getCurrentTimeout() {
        return TIMEOUT_MS;
    }

    @Override
    public void retry(VolleyError error) throws VolleyError{
        //to deal with cookie timeout
        if (error instanceof AuthFailureError && getCurrentRetryCount() < 2 && AccountManager.isLogOn()) {
              //登录操作,获取新的Cookie

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        super.retry(error);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值