检測wifi是否须要portal验证 公共场所wifi验证
何为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验证的更多相关文章
- 爱国者布局智能硬件,空探系列PM2.5检測仪“嗅霾狗”大曝光
随着6月1日史上最严禁烟令的正式实施,国内包含北京.上海.成都等大中型城市已经在公共场所全面禁烟.众所周知,实施禁烟令的根本在于促进空气的净化,实现环境的改善,要达到这个目的,光有禁烟令是远远 ...
- Canny边缘检測算法原理及其VC实现具体解释(一)
图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般能够看作是一个阶跃,既从一个灰度值在非常小的缓冲区域内急剧变化到还有一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图 ...
- Viola-Jones人脸检測
OpenCV中有一个基于树的技术:Haar分类器,它建立了boost筛选式级联. 它能够识别出人脸和其它刚性物体. 对于检測"基本刚性"的物体(脸,汽车,自行车,人体等)这类识别任 ...
- 图像边缘检測--OpenCV之cvCanny函数
图像边缘检測--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...
- Cocos2d-x教程(34)-三维物体OBB碰撞检測算法
欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...
- iOS开发实践之网络检測Reachability
在网络应用开发中.有时须要对用户设备的网络状态进行实时监控.以至于对用户进行友好提示 或者依据不同网络状态处理不一样的逻辑(如视频播放app,依据当前的网络情况自己主动切换视频清晰度等等).用Reac ...
- 目标检測的图像特征提取之(一)HOG特征
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...
- GestureDetector封装手势检測上下滑动
项目中须要检測ListView的上滑下滑隐藏顶部View控件,之前在网上也有非常多实现案例.在git上发现个封装非常不错的样例,记录下来. GestureDetector是一个手势检測类,内部有个Si ...
- server的散热和Linux中温度的检測
当server被放在散热条件不好的条件下,这样会导致硬盘驱动过早损坏,而且server其它的组件也会非常快出现问题. 现代的server主板检測到CPU过热的时候,一般会限制CPU的频率,所以即使se ...
随机推荐
- Anagram Groups(字符串)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2316 理解错一点题意就能WA到死...题中对于 ...
- Win10 计算机管理 打不开应急办法
最近Win10重置以后,计算机管理打不开了,经过一番尝试,通过以下命令在cmd下面可以直接打开 compmgmt 或者compmgmt.msc打开 在次特做一个记录,以备急用
- 【NOIP2018】 游记
All ended? [day 0] 一点感觉没有,不过翘掉了早上的课(当然还有前三周的课),然后刚想睡一会儿,就被通知要上车了/难受 在车上玩了一会儿早上下的Super Mario(主要是早上刷了一 ...
- ROS-TF-Time
前言:如何在特定时间进行转换.让第二只乌龟去第一只乌龟在5秒前的地方. 参考自:http://wiki.ros.org/tf/Tutorials/Time%20travel%20with%20tf%2 ...
- HTML中javascript使用dom获取dom节点范例
<!-- HTML结构 --> <div id="test-div"> <div class="c-red"> <p ...
- C# 多线程系列(三)
线程池 创建线程需要时间,如果有不同的小任务要完成,就可以事先创建许多线程,在应完成这些任务时发出请求.这个线程数最好在需要更多线程时增加,在需要释放资源时减少. 不需要自己创建这样的一个列表.该列表 ...
- css的选择器效率分析
我们都知道,CSS具有叠加性(同一个元素被多条样式规则指定),继承性(后代元素会继承前辈元素的一些样式和属性)和优先级 (由于CSS的叠加性和继承性,将产生优先级,这指的是哪条样式规则会最终作用于指定 ...
- python--1、入门
python的创始人为吉多·范罗苏姆(Guido van Rossum). python在2017年统计的所有语言排名中处于第四名,稳步上升状态. python应用领域: WEB开发(Django框架 ...
- 关于VM虚拟机在使用网络时与锐捷网络冲突的解决问题
在使用NAT网络模式的时候,锐捷会因为冲突强制关闭NAT服务,导致虚拟机无法上网,解决的办法是让NAT服务一直保持启动,写一个bat脚本来一直检测服务是否在运行,并且进行启动操作. 当不需要用虚拟机的 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作
http://www.cnblogs.com/wuhuacong/p/5147368.html 在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这 ...