博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android混合开发模式下Cookies的管理
阅读量:5799 次
发布时间:2019-06-18

本文共 1554 字,大约阅读时间需要 5 分钟。

Android混合开发不管是使用的哪种hybird框架都是基于WebView实现的,所以我们需要在原生页面拿到服务器返回的cookies的时候将其同步到WebView中,同时在原生页面调用服务器api之前,从WebView_cookies.db中拿到最新的cookies写入http请求头当中,只有这样才能保持用户的登录状态,否则服务器检测到cookies中的sessionId过期后会返回错误码提示用户登录失效。以okhttp网络框架为例,通过写两个拦截器分别在发送http请求的时候获取本地cookies写到http header当中,在接收http响应的时候从响应头中拿到最新的cookies并刷新本地cookies:

public class AddCookieInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        final Context context = PApplication.getInstance();        String cookies = Commons.getSSOCookie(context);        Request.Builder builder = chain.request().newBuilder();        if (EmptyHelper.isNotEmptyOrNotNull(cookies)) {            Request newRequest = builder.addHeader("Cookie", cookies).build();            return chain.proceed(newRequest);        }    }}复制代码
public class ReceivedCookieInterceptor implements Interceptor{    @Override    public Response intercept(Chain chain) throws IOException {        Response originalResponse = chain.proceed(chain.request());        List
cookies = originalResponse.headers("Set-Cookie"); if (!cookies.isEmpty()) { CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true);// 允许接受 Cookie String domain = HeadDomin(); for(String cookie : cookies){ cookieManager.setCookie(domain,cookie); } cookieManager.flush(); } return originalResponse; }}复制代码

转载于:https://juejin.im/post/5ce79a4f6fb9a07ee4633d9d

你可能感兴趣的文章
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>
国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
查看>>
微软将停止对 IE 8、9和10的支持
查看>>
微服务架构会和分布式单体架构高度重合吗
查看>>
如何测试ASP.NET Core Web API
查看>>
《The Age of Surge》作者访谈
查看>>
测试人员的GitHub
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
有关GitHub仓库分支的几个问题
查看>>
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
Webpack入门教程三十
查看>>
EAServer 6.1 .NET Client Support
查看>>
锐捷交换机密码恢复(1)
查看>>
Kali linux virtualbox rc=1908 错误解决办法
查看>>
Erlang学习总结之Erlang语法中的逗号(,)、分号(;),句号(.)的正确用法...
查看>>
linux软件包管理之三(源代码安装)
查看>>