java如何记住登录状态_Android开发中 如何保持登录状态

本文介绍了在Android开发中如何实现Session保持,确保用户登录状态的持久化。通过解析响应头中的cookie,并在后续请求中添加cookie,利用OkHttp的拦截器机制,可以有效地解决登录状态的保持问题,实现用户登录后的会话管理。
摘要由CSDN通过智能技术生成

之前多iOS开发没遇到过session保持的问题,第一次做安卓项目,组长说和iOS一样,瞬间蒙圈啦,session保持是什么。。。

session:通俗点说就是网络请求中的会话创建保持的一种服务端机制。

cookie:服务端给每个session分配一个唯一的JSESSIONID,通过cookie给客户端;

session和cookie都是为了用来保存状态信息的。一个用于服务端一个用于客户端;

解决:

1.在客户端发送登录请求后,将response中的cookie取出保存在本地全局变量;

call.enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

System.out.println("_____________成功" + response.body().getData());

SessionUtilTools.getSession(response.headers());// 获取响应中的cookie

SharedData.isFirst = true;

Intent intent = new Intent();

intent.setClass(MainActivity.this,TabBarActivity.class);

startActivity(intent);

finish();

}

@Override

public void onFailure(Call call, Throwable t) {

System.out.println("___________1失败" + t);

}

});

session 工具类(用于取cookie)

public class SessionUtilTools {

public static void getSession(Headers headers){

List cookies = headers.values("Set-Cookie");

String session = cookies.get(0);

SharedData.sessionCookie = session.substring(0,session.indexOf(";"));// 取出cookie 保存在全局变量中

}

}

2.每次请求的时候将cookie带上

public class TokenInterceptor implements Interceptor{ //自定义拦截器

@Override

public Response intercept(Chain chain) throws IOException {

Request newRequest = chain.request()

.newBuilder()

.addHeader("cookie",SharedData.sessionCookie)//在请求中添加登录后获取的cookie

.build();

Response response =chain.proceed(newRequest);

return response;

}

}

//网络请求框架

private static OkHttpClient getClient(){

if (client==null)//将自定义的拦截器添加

client = new OkHttpClient().newBuilder().addInterceptor(new TokenInterceptor()).build();

return client;

}

这样就解决了登录保持的问题;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值