android 原生和h5,Android 原生和H5 同一cookie

引言

在开发过程中,我们有时会需要让Android原生 登录完成之后记录登录状态,然后在内嵌的 H5 页面也使用当前的登录账户,这个时候,我们可以采用 token 的方式,后台根据 token 方式,去加载对应页面数据。

当 token 失效时,当然也就代表了当前的用户的登录有效期过期了。

不过 token 有效期的检验 逻辑很简单,我们先不做分析,下面我们来分析下如何将登录信息保存到cookie,然后让Android 和 H5 公用这个cookie。

具体操作

步骤一、当然是先去登录,获取cookie

以HttpURLcollection为例:

String cookieStr = conn.getHeaderField("Set-Cookie");

步骤二、将cookie同步到WebView中

/**

* 将cookie同步到WebView

* @param url WebView要加载的url

* @param cookie 要同步的cookie

* @return true 同步cookie成功,false同步cookie失败

* @Author JPH

*/

public static boolean syncCookie(String url,String cookie) {

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

CookieSyncManager.createInstance(context);

}

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setCookie(url, cookie);//如果没有特殊需求,这里只需要将session id以"key=value"形式作为cookie即可

String newCookie = cookieManager.getCookie(url);

return TextUtils.isEmpty(newCookie)?false:true;

}

如果设置成功,通过cookieManager.getCookie(url)方法就可取得刚才设置的cookie,如果两次设置cookie的url相同,则CookieManager会将上一次设置的cookie覆盖,已达到更新的效果。

提示:

同步cookie要在WebView加载url之前,否则WebView无法获得相应的cookie,也就无法通过验证。

每次登录成功后都需要调用”syncCookie”方法将cookie同步到WebView中,同时也达到了更新WebView的cookie。如果登录后没有及时将cookie同步到WebView可能导致WebView拿的是旧的session id和服务器进行通信。

优点:

方便,只需要在登陆后将cookie同步到WebView即可,省去了每次请求都需要设置一次的繁琐。

兼容性好,因为是系统原生支持的,所以兼容性自然比方式一要好,不存在cookie被拦截的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值