何为wifi portal验证?

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

案例

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

目标

我们的目标很明确:就是要在wifi连接后,判断wifi是否需要portal验证?如果需要portal验证,那么我们直接启动一个intent去发起随意一个网页的访问,如:http://www.baidu.com。此时,portal服务器会检测到有新的用户连接,就会劫持用户的wifi路由,强制去访问wifi的portal验证网页(类似过滤器),用户只要在这个网页上完成验证,即可使用wifi。

实现

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

[java] view plaincopy
  1. private boolean isWifiSetPortal() {
  2. final String mWalledGardenUrl = "http://clients3.google.com/generate_204";
  3. final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;
  4. HttpURLConnection urlConnection = null;
  5. try {
  6. URL url = new URL(mWalledGardenUrl);
  7. urlConnection = (HttpURLConnection) url.openConnection();
  8. urlConnection.setInstanceFollowRedirects(false);
  9. urlConnection.setConnectTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
  10. urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
  11. urlConnection.setUseCaches(false);
  12. urlConnection.getInputStream();
  13. return urlConnection.getResponseCode() != 204;
  14. } catch (IOException e) {
  15. //e.printStackTrace();
  16. return false;
  17. } finally {
  18. if (urlConnection != null) {
  19. urlConnection.disconnect();
  20. }
  21. }
  22. }

这个实现很简单,谷歌会进行一个http的访问,如果返回码为204,就证明手机当前连接的wifi,是不需要进行portal验证的。否则,则需要进行portal验证。
至于为什么会是204,这个暂时没研究,知道的朋友可以留言告诉我一下。

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

  1. 检測wifi是否须要portal验证 公共场所wifi验证

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

  2. OpenPortal Wifi认证、Portal协议认证、WEB认证解决方案

    OpenPortal认证系统 操作手册 OpenPortal网络接入认证专家 目录 声明 4 前言 5 一. 内容概述 6 二. 技术支持 6 三. 致谢: 6 第一章 理念与组成 7 1.1 理念 ...

  3. wifi信号手机测试软件,专业的WiFi检测工具有哪些?如何解决wifi信号不好?

    原标题:专业的WiFi检测工具有哪些?如何解决wifi信号不好? 有朋友wifi测试软件有哪些?WiFi信号和声音一样,强弱都是可以测量的,检测WiFi的方法有很多,作为普通的家庭用户,我们有时需要测 ...

  4. 海南省重点公共场所WiFi覆盖率达到97.7%

    海南省长刘赐贵赴中国电信海南公司调研,并主持召开全省信息基础设施建设座谈会.要求各有关方面进一步深化认识.明确目标,着力解决好规划.标准.立法.共建共享等问题,齐心协力,密切配合,加快推进与国际旅游岛 ...

  5. WIFI基础入门--802.11--用户身份验证--7

    WIFI基础入门--802.11--用户身份验证--7 1.优势 2.可扩展身份验证协议(EAP) 2.1 EAP的封包格式 2.1.1 Code(类型代码) 2.1.2 Identifier(标识符 ...

  6. android wifi身份验证,连接wifi出现“身份验证出现问题”如何解决

    带Wi-Fi无线上网功[能的]笔记本在[工作].[生活].[学习][中的]应用[已经][相当][普遍],它[的方]便性[也得][到了]众[人的]认可.而[随着]娱乐.商务便携化需求的[提升],[越来] ...

  7. python自动检测wifi是否能联网,断开wifi重新连接wifi的代码。

    #文件名 pyWIFI.py #python自动检测wifi是否能联网,断开wifi重新连接wifi的代码.# 网上下载安装Python3.8 # 配置环境变量 以下为参考 # python环境变量 ...

  8. Web认证Wifi接入-captive portal

    captive portal实现了Wifi接入的Web认证,客户端在连接到hotspot后,正常使用Wifi前,访问任何网址都会被强制指向到特定的web页面上完成认证,认证过程可以只是点击一个同意使用 ...

  9. kotlin的wifi获取列表和连接指定wifi

    简介 本文实现3个功能: 1.获取位置权限 2.获取wifi列表 3.连接指定wifi 1.添加权限 <uses-permission android:name="android.pe ...

最新文章

  1. 优先级队列实现哈夫曼树的编码和译码
  2. 机器学习中防止过拟合的处理方法
  3. Apache VFS:基本介绍
  4. .Net架构篇:实用中小型公司支付中心设计
  5. Weird Flecks, But OK
  6. WinForm中使用AnyCAD三维控件 の 初始化
  7. 鼎信诺oracle_鼎信诺审计系统操作说明
  8. (24)HTTP 方法:GET 对比 POST
  9. 8253/8255/8259相关知识
  10. 二级c语言题库分类,二级C语言题库分类.xls
  11. 筱筱笔记:npm发包流程
  12. C语言:goto循环语句
  13. 这绝对是个高手,一个用 C 开发的图形界面开发库
  14. 无人机行业情况 - 亿航、大疆、极飞
  15. Vue 实现 H5video 视频标签 禁止快进 最优
  16. 计算机专业要学英语口语,学习英语口语必须掌握两大法宝
  17. 使用CAS部署SSO服务的简单实现
  18. n-gram语言模型LM
  19. 流畅的Python——符合Python风格的对象
  20. 微信小程序—仿淘宝热搜词在搜索框中轮播功能

热门文章

  1. 关于el-table表格设置el-table-column宽度的问题
  2. 2018中国网络安全大会6月在京召开
  3. 第五届世界互联网大会重点介绍工业互联网
  4. Ubuntu windows双系统安装
  5. 【wxWidgets 教程】安装、配置、HelloWorld篇(一)
  6. CodeForces 348D Turtles(LGV定理)题解
  7. WIN32 常见IPC方式
  8. 7、大数据中常见的文件存储格式以及hadoop中支持的压缩算法
  9. TCP和UDP的详细内容
  10. (33)ISE 约束文件(IO约束)