完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
做一个webview组件,思路如下:
用户首次登陆,cookie为空,webivew.load(url),然后通过onPageLoaded获得cookie,再setCookie,下次用户二次登陆可以直接登陆而不用输入账号密码。 代码如下: url1 = "xxxxxxxx"; webView = (WebView) findComponentById(ResourceTable.Id_webview); webView.getWebConfig().setJavaScriptPermit(true); cookieStore = CookieStore.getinstance(); cookieStore.setCookieEnable(true); cookieStore.setCrossDomainCookieEnable(webView, true); if (cookieStore.getCookie(url1) == null) { webView.load(url1); } else { String[] cookies = cookieStore.getCookie(url1).split(";"); for (int i = 0; i < cookies.length; i++) { cookieStore.setCookie(url1,cookies[i]); } cookieStore.persist(); webView.load(url1); } webView.setWebAgent(new WebAgent() { @Override public boolean isNeedLoadUrl(WebView webView, ResourceRequest request) { return true; } @Override public void onPageLoaded(WebView webView, String url) { super.onPageLoaded(webView, url); cookieStore.setCookieEnable(true); cookieStore.setCrossDomainCookieEnable(webView, true); cookieStore.getCookie(url1); cookieStore.persist(); } }); 在setCookie中能看到key=value值,但是app进程一结束,cookie就失效。此问题困扰我好几天,望各位大神不吝赐教!谢谢! |
|
相关推荐
2个回答
|
|
你读取加载url中的cookie 他是实时的 不是存在本地的,所以你第二次打开的时候回cookie就失效了
第一步实现登录功能,然后返回cookie相关参数,在然后将cookie保存在本地中 第二步在加载时候(isNeedLoadUrl)将cookie 拼接传给后台, //设置cookie ohos.agp.components.webengine.CookieStore mCookieStore = ohos.agp.components.webengine.CookieStore.getInstance(); mCookieStore.setCookieEnable(true); mCookieStore.setCookie(url, "Domain="+"1111"); mCookieStore.setCookie(url, "Path=/"); mCookieStore.setCookie(url, "Value=00000"); //获取cookie ohos.agp.components.webengine.CookieStore mCookieStore = ohos.agp.components.webengine.CookieStore.getInstance(); String cookiestr=mCookieStore.getCookie(url); HiLogUtils.PrintLog(cookiestr); 设置获取cookie代码如下 public class WebviewSlice extends AbilitySlice { private static final String EXAMPLE_URL = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=android%E7%89%88%E6%9C%AC%E5%8F%B7&fenlei=256&oq=android%25E7%2589%2588%25E6%259C%25AC%25E4%25BB%25A3%25E5%258F%25B7&rsv_pq=a1072f0e00139b17&rsv_t=1790Ohd03bVT21DCnl7FeJacxdjk58eJxGpr4r41zM6bzt8pHm62TUYAMD4&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t&rsv_sug3=110&rsv_sug1=63&rsv_sug7=100&rsv_sug2=0&inputT=283&rsv_sug4=1617"; @Override protected void onStart(Intent intent) { super.onStart(intent); setUIContent(ResourceTable.Layout_webview_slice); WebView webView = (WebView) findComponentById(ResourceTable.Id_webview); webView.getWebConfig().setJavaScriptPermit(true); // 如果网页需要使用JavaScript,增加此行;如何使用JavaScript下文有详细介绍 webView.setWebAgent(new WebAgent() { @Override public boolean isNeedLoadUrl(WebView webView, ResourceRequest request) { if (request == null || request.getRequestUrl() == null) { // LogUtil.info(TAG,"WebAgent isNeedLoadUrl:request is null."); return false; } String url = request.getRequestUrl().toString(); //设置cookie ohos.agp.components.webengine.CookieStore mCookieStore = ohos.agp.components.webengine.CookieStore.getInstance(); mCookieStore.setCookieEnable(true); mCookieStore.setCookie(url, "Domain="+"1111"); mCookieStore.setCookie(url, "Path=/"); mCookieStore.setCookie(url, "Value=00000"); if (url.startsWith("http:") || url.startsWith("https:")) { webView.load(url); return false; } else { return super.isNeedLoadUrl(webView, request); } } @Override public void onPageLoaded(WebView webView, String url) { super.onPageLoaded(webView, url); //获取cookie ohos.agp.components.webengine.CookieStore mCookieStore = ohos.agp.components.webengine.CookieStore.getInstance(); String cookiestr=mCookieStore.getCookie(url); HiLogUtils.PrintLog(cookiestr); } }); webView.load(EXAMPLE_URL); } } |
|
|
|
我之前也遇到同样的问题,最后是取出cookie保存数据库,然后重启app时从数据库提取,来实现的。按理说是有保存cookie的api的但是没有效果,不知道现在是不是好使了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
掰掉卫星电话的外置天线,华为“天才少年”助力 Mate 捅破天
5260 浏览 0 评论
1202 浏览 2 评论
华秋电子 | 电子发烧友亮相OpenHarmony人才生态大会2024
2297 浏览 0 评论
OpenHarmony有 支持的分布式数据库吗? 自动同步各节点数据?
1636 浏览 0 评论
OpenHarmony人才生态大会南向生态社区发展论坛在武汉圆满举办
1240 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:03 , Processed in 0.534070 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号