一般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);
}
}