我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中webView加载H5绑定cookie实例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中webView加载H5绑定cookie实例

简介:

我最近在做项目的时候遇到了这种情况:

1.需要用WebView实现一个H5的登陆注册。

2.大赛报名,用H5实现。这些情况下,我需要把cookie传给服务器,让其判断当前账户是否登陆成功。查阅了一些资料后,终于搞定了。

1. 给一个加载的链接设置cookie


 private void syncCookie(String url) {
 try {
  CookieSyncManager.createInstance(mWvSignUp.getContext());//创建一个cookie管理器
  CookieManager cookieManager = CookieManager.getInstance();
  cookieManager.setAcceptCookie(true);
  cookieManager.removeSessionCookie();// 移除以前的cookie
  cookieManager.removeAllCookie();
  StringBuilder sbCookie = new StringBuilder();//创建一个拼接cookie的容器,为什么这么拼接,大家查阅一下http头Cookie的结构
  sbCookie.append(_mApplication.getUserInfo().getSessionID());//拼接sessionId
  sbCookie.append(String.format(";domain=%s", ""));
  sbCookie.append(String.format(";path=%s", ""));
  String cookieValue = sbCookie.toString();
  cookieManager.setCookie(url, cookieValue);//为url设置cookie
  CookieSyncManager.getInstance().sync();//同步cookie
 } catch (Exception e) {
  e.printStackTrace();
 }
 }

2.在执行webview的loadurl之前,先执行


// 设置cookie
syncCookie(mUrl);

3. 注意事项

这里需要注意的是在设置cookie之后,是不能设置以下属性的,否则cookie是无效的(不只是这些属性,这里只是举例,最好的方式是在执行loadurl之前再设置cookie)


 mWvSignUp.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
  mWvSignUp.getSettings().setJavaScriptEnabled(true);
  mWvSignUp.getSettings().setDatabaseEnabled(true);
  mWvSignUp.getSettings().setDomStorageEnabled(true);

4.一些ajax请求需要带入cookie怎么办?

在项目中因为有时候一些点击事件是用ajax请求实现的,同时也需要判断是否登陆。浏览器会自动保存cookie,并传送给服务器,但是android不会,这个时候我们需要拦截这个请求并将cookie附带上去。

5.0以下:


  mWvSignUp.setWebViewClient(new WebViewClient() {
   
   @Override
   public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
    syncCookie(url);
    return super.shouldInterceptRequest(view, url);//将加好cookie的url传给父类继续执行
   }
 });

5.0以上:


 mWvSignUp.setWebViewClient(new WebViewClient() {
 @SuppressLint("NewApi")
 @Override
 public WebResourceResponse shouldInterceptRequest(WebViewview, WebResourceRequest request) {
 String url = request.getUrl().toString();
 syncCookie(url); 
 return super.shouldInterceptRequest(view, url);//因为跟5.0以下的方法返回值是同一个类,所以这里偷懒直接调动4.0方法生成请求
 });

注:这里我采用了偷懒的方式,如果有兴趣的朋友,可以通过以下的方法设置cookie


 mWvSignUp.setWebViewClient(new WebViewClient() { 
 @SuppressLint("NewApi")
 @Override
 public WebResourceResponse shouldInterceptRequest(WebViewview, WebResourceRequest request) {  
 Map<String,String> requestHead = request.getRequestHeaders();//拿到头 
  return super.shouldInterceptRequest(view,new WebResourceRequest() { //重写请求中的数据,包括头,此时可以把cookie塞到requestHeader中
  @Override
  public Uri getUrl() {
   return null;
  }
  @Override
  public boolean isForMainFrame() {
   return false;
  }
  @Override
  public boolean hasGesture() {
   return false;
  }
  @Override
  public String getMethod() {
   return null;
  }
  @Override
  public Map<String, String>getRequestHeaders() {
   return null;
  }
 }
 })}
 });

总结:webView还有很多功能需要我们探索,如果有一些好的建议希望在评论里提交给我。希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文章:Android实现清除单个域名的cookie


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中webView加载H5绑定cookie实例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中webView加载H5绑定cookie实例

简介: 我最近在做项目的时候遇到了这种情况: 1.需要用WebView实现一个H5的登陆注册。 2.大赛报名,用H5实现。这些情况下,我需要把cookie传给服务器,让其判断当前账户是否登陆成功。查阅了一些资料后,终于搞定了。 1. 给一个
2022-06-06

Android Webview的postUrl与loadUrl加载页面实例

关于Android的webview,用过的想必都不会陌生。这里我就不说webview的基本用法了,想要知道的可以去网上百多,有很多介绍webview基本用法的。 本文要介绍的主要是在项目过程中使用webview的postUrl遇到的坑。 1
2022-06-06

Android Webview添加网页加载进度条实例详解

推荐阅读:Android WebView线性进度条实例详解 最近在android项目中使用webview嵌套了一个抽奖活动网页,活动上线,运行良好(改了N次需求和突发bug),还好这种模式的活动,只需要修改网页,不需要重新打包发布市场,这也
2022-06-06

Android开发如何实现webview中img标签加载本地图片

这篇文章主要介绍Android开发如何实现webview中img标签加载本地图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:在网上查了很多教程,感觉很麻烦,各种方法,最后实践很简单,主要是两步:WebSe
2023-05-30

Android实现自定义加载框的代码示例

App在与服务器进行网络交互的时候,需要有一个提示的加载框,如图:此时我们可以自定义一个加载中的对话框,代码如下:public class LoadingDialog extends Dialog { private static fin
2022-06-06

Android应用开发中Fragment的静态加载与动态加载实例

1、Fragment的静态使用 Fragment是作为Activity的UI的一部分,它内嵌在Activity中,多个Fragment可以把一个Activity分成多个部分,这在大屏幕手机或者平板电脑中会比较多的用到,这样就不用使用多个Ac
2022-06-06

Android 加载assets中的资源文件实例代码

Android 加载assets资源 在android中,如何加载assets目录下的文件夹呢?方法很简单,使用 AssetManager, 即AssetManager assetManager = getAssets(); 例子如下:
2022-06-06

android中图片加载到内存的实例代码

本文演示android中图片加载到内存首先设计界面:代码如下:2022-06-06

Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)

ListView控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等….我们先来看看实现的效果吧!好的,我们新建一个项目LvCheckBox我们事先先把这两
2022-06-06

Android App中实现图片异步加载的实例分享

一、概述 一般大量图片的加载,比如GridView实现手机的相册功能,一般会用到LruCache,线程池,任务队列等;那么异步消息处理可以用哪呢? 1、用于UI线程当Bitmap加载完成后更新ImageView 2、在图片加载类初始化时,我
2022-06-06

Android中的类文件和类加载器实例分析

本篇内容介绍了“Android中的类文件和类加载器实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Java中的类加载器首先花点时间
2023-06-30

Android中自定义加载样式图片的具体实现

先让大家看看效果图吧,相信很多Android初学者都想知道这中效果是怎么实现的,来上图: 想实现上面这张图中的自定义加载样式,其实很简单,首先我们需要的布局组件有ProcessBar和TextView,下面是布局文件的代码(只是加载的页面的
2022-06-06

Android 自定义标题栏 显示网页加载进度的方法实例

这阵子在做Lephone的适配,测试组提交一个bug:标题栏的文字较长时没有显示完全,其实这并不能算个bug,并且这个问题在以前其他机器也没有出现,只是说在Lephone的这个平台上显示得不怎么美观,因为联想将原生的标题栏UI进行了修改。修
2022-06-06

Android中怎么通过自定义view实现进度条加载效果

Android中怎么通过自定义view实现进度条加载效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分析图:代码如下:package com.example.dotloa
2023-05-30

Android加载大分辨率图片到手机内存中的实例方法

还原堆内存溢出的错误首先来还原一下堆内存溢出的错误。首先在SD卡上放一张照片,分辨率为(3776 X 2520),大小为3.88MB,是我自己用相机拍的一张照片。应用的布局很简单,一个Button一个ImageView,然后按照常规的方式,
2022-06-06

微信小程序常用功能实例汇总包括上拉刷新,下拉加载,列表数据绑定,轮播,参数传递

这篇文章主要介绍了微信小程序常用功能实例汇总包括上拉刷新,下拉加载,列表数据绑定,轮播,参数传递,拨打电话,需要的朋友可以参考下
2022-12-10

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录