何为wifi portal验证?

平时在商场,咖啡厅,银行等公共场所。我们手机提示:有可用WLAN。这些WIFI能够直接连接,不须要password,但须要我们手动在手机网页上进行验证,通常是输入一个手机号码,点击获取验证码或password。server会发一条短信验证码或password到手机上,将其输入网页的password框,登陆就可以使用免费wifi。这个验证的网页称为portal(翻译:门。入门,表示要使用这个公共wifi,就要先“进入”这个门,也就是验证的意思)。

案例

有些手机监听到用户连接wifi时,假设这个wifi是须要进行portal验证的话。就会自己主动弹出一个界面(或启动一个浏览器),这个界面里面有一个验证网页,给用户进行wifi验证。这样就不用用户手动去打开浏览器进行验证。提高用户体验。但有些手机就偏偏不会自己主动弹出这个验证页面。那么。假设你公司开发一款app,须要自己主动弹出这个wifi portal验证界面(针对于某些不会弹出验证界面的系统)。那怎么办呢?

目标

我们的目标非常明白:就是要在wifi连接后。推断wifi是否须要portal验证?假设须要portal验证,那么我们直接启动一个intent去发起任意一个网页的訪问,如:http://www.baidu.com。此时,portalserver会检測到有新的用户连接。就会劫持用户的wifi路由。强制去訪问wifi的portal验证网页(类似过滤器),用户仅仅要在这个网页上完毕验证,就可以使用wifi。

实现

以下的代码块是抽取于android源代码里的一个方法,该方法就是检測当前手机连接的wifi是否须要进行portal验证。一般这种方法都是放在wifi连接状态发生变化的广播接收器里面。

private boolean isWifiSetPortal() {final String mWalledGardenUrl = "http://clients3.google.com/generate_204";final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;HttpURLConnection urlConnection = null;try {URL url = new URL(mWalledGardenUrl);urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setInstanceFollowRedirects(false);urlConnection.setConnectTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);urlConnection.setUseCaches(false);urlConnection.getInputStream();return urlConnection.getResponseCode() != 204;} catch (IOException e) {//e.printStackTrace();return false;} finally {if (urlConnection != null) {urlConnection.disconnect();}}}

这个实现非常easy,谷歌会进行一个http的訪问,假设返回码为204,就证明手机当前连接的wifi,是不须要进行portal验证的。否则。则须要进行portal验证。
至于为什么会是204。这个临时没研究,知道的朋友能够留言告诉我一下。

检測wifi是否须要portal验证 公共场所wifi验证相关推荐

  1. 检测wifi是否需要portal验证 公共场所wifi验证

    何为wifi portal验证? 平时在商场,咖啡厅,银行等公共场所,我们手机提示:有可用WLAN.这些WIFI可以直接连接,不需要密码,但需要我们手动在手机网页上进行验证,一般是输入一个手机号码,点 ...

  2. Canny边缘检測算法原理及其VC实现具体解释(一)

    图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般能够看作是一个阶跃,既从一个灰度值在非常小的缓冲区域内急剧变化到还有一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图 ...

  3. iOS开发实践之网络检測Reachability

    在网络应用开发中.有时须要对用户设备的网络状态进行实时监控.以至于对用户进行友好提示 或者依据不同网络状态处理不一样的逻辑(如视频播放app,依据当前的网络情况自己主动切换视频清晰度等等).用Reac ...

  4. 深度学习的应用——检測糖尿病型视网膜症

    近日.谷歌在<美国医学会杂志>发表题为 "Development and Validation of a Deep Learning Algorithm for Detectio ...

  5. 【从零学习openCV】IOS7下的人脸检測

    前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...

  6. AIX下RAC搭建 Oracle10G(一)检測系统环境

    AIX下RAC搭建系列 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AIX203 AIX204 交换机 SAN光纤交换机 存储 S ...

  7. 从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数...

    这一章节我们再上一个章节的基础上加上一个检查订单功能 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1 ...

  8. 检測磁盘驱动的健康程度SMART

    在server中,全部组件中一般最easy坏掉的就是磁盘.所以一般採取RAID来保证系统的稳定性,通过冗余磁盘的方式防止磁盘故障. 现代硬件驱动器一般支持SMART(自我监測分析和报告技术),它可以监 ...

  9. windows下检測文件改变

    这个主要是应用在我前一篇博客里提到的脚本热载入功能. 主要实现的功能检測目录内文件的变化(改变.新增.删除.重命名),当发现改变的时候通知lua又一次载入脚本.基本上就是一个windows api的使 ...

最新文章

  1. C# 获取电脑的网络连接状态
  2. Bad version number in .class file
  3. 单片机 原子性操作_一款深藏功与名的国产单片机——F1C100A
  4. 使用studio2005写单元测试
  5. 动手开始创建第一个 Angular 应用并通过 gh-pages 发布到 Github 上
  6. http、https、密码学基础、GET和POST区别
  7. mybatis学习(23):分页1 多参数传递(索引方式)
  8. php导出excel代码,php导出excel的实例代码
  9. AI会取代CPDA数据分析师吗?
  10. 用得上的商学课-老路
  11. 缅甸投资环境及法律政策简介
  12. 【Web动画】SVG 线条动画入门
  13. ThreadLocal的介绍与使用
  14. sever串口wifi拓展板_基于串口调试助手的WIFI模块调试-FPGA简单联网(点灯)...
  15. lamp技术研发人员的必备
  16. 【原】群晖btrfs系统修复
  17. .NET Core 2.2 IIS网站出现HTTP503无法访问解决方法
  18. Springboot使用HTML模板发送电子邮件
  19. 找对英语学习方法的第一本书之:标准发音
  20. 基于java客户订单管理系统

热门文章

  1. 帝国CMS7.5仿《D9下载站》软件应用下载网站源码
  2. javaweb JAVA JSP化妆品销售网站系统 JSP化妆品购物系统 JSP口红销售系统 JSP电子商务系统 JSP网店商城
  3. ipa签名软件_/应用推荐|全新IPA签名工具,天天签;免费使用!
  4. 无人机仿真XTDrone学习二:常用的mavros消息类型
  5. VTK笔记-几何图形-点vtkPoints构成的空间曲线
  6. CCNA考试错点总结
  7. Unity的Realtime GI, Probe Volumes, LOD Groups
  8. win10安装oracle 12c报错[INS-30131] 附解决方法
  9. Android Studio 环境配置及常见问题处理
  10. 南京道路交通举报三种方式