何为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. 爱国者布局智能硬件,空探系列PM2.5检測仪“嗅霾狗”大曝光

        随着6月1日史上最严禁烟令的正式实施,国内包含北京.上海.成都等大中型城市已经在公共场所全面禁烟.众所周知,实施禁烟令的根本在于促进空气的净化,实现环境的改善,要达到这个目的,光有禁烟令是远远 ...

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

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

  3. Viola-Jones人脸检測

    OpenCV中有一个基于树的技术:Haar分类器,它建立了boost筛选式级联. 它能够识别出人脸和其它刚性物体. 对于检測"基本刚性"的物体(脸,汽车,自行车,人体等)这类识别任 ...

  4. 图像边缘检測--OpenCV之cvCanny函数

    图像边缘检測--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...

  5. Cocos2d-x教程(34)-三维物体OBB碰撞检測算法

    欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...

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

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

  7. 目标检測的图像特征提取之(一)HOG特征

    1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...

  8. GestureDetector封装手势检測上下滑动

    项目中须要检測ListView的上滑下滑隐藏顶部View控件,之前在网上也有非常多实现案例.在git上发现个封装非常不错的样例,记录下来. GestureDetector是一个手势检測类,内部有个Si ...

  9. server的散热和Linux中温度的检測

    当server被放在散热条件不好的条件下,这样会导致硬盘驱动过早损坏,而且server其它的组件也会非常快出现问题. 现代的server主板检測到CPU过热的时候,一般会限制CPU的频率,所以即使se ...

随机推荐

  1. 第14章 Wi-Fi系统应用 14.1 了解Wi-Fi系统的结构

    Android平台中Wi-Fi系统从上到下主要包括Java框架类.Android适配器库.wpa_supplicant守护进程.驱动程序和协议,这几部分的系统结构如图14-3所示. (1)Wi-Fi用 ...

  2. Anagram Groups(字符串)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2316 理解错一点题意就能WA到死...题中对于 ...

  3. 0420-mysql关键词/错误提示关键词

    操作关键词: 1.show //查看.展示 2.use //选择(库/表) 3.database/s //库/所有库 4.table/s //表/所有表 5.primary key //主键:不可重复 ...

  4. php导出mysql源码

    件名:db_backup.php 源代码如下: 复制代码 代码如下: <?php ini_set("max_execution_time", "180") ...

  5. 从0开始学习BFC

    为什么需要BFC? <style> .red { background: red; } .blue { background: #1890ff; } .green { background ...

  6. Azure Command Line(Azure CLI)指南

    1.安装. MSI安装程序:https://aka.ms/installazurecliwindows https://docs.microsoft.com/zh-cn/cli/azure/insta ...

  7. IP地址库

    吐槽 前两天一个线上的IP地址库除了点幺蛾子,一查代码,发现用的库早就不更新了,遂决定换库,有几个方案: 纯真数据库 IPIP数据库 GeoIP 纯真数据库是大码农的福音,免费,但是精度一般:IPIP ...

  8. 2C课程笔记分享_StudyJams_2017

    课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...

  9. 【Linux】swap分区简介及空间增加方式

    swap分区简介 Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存 ...

  10. Java_Reflect反射

    类是对象,类是java.lang.Class类的实例对象.There is a class named Class class Foo{} public class ClassDemo{ public ...