2012-04-22 115 views
1

我是Android开发新手,我需要一些帮助才能解决以下问题:我学院的Wi-Fi网络有一个强制门户,要求输入用户名和密码才能访问学校系统,所以我想我可以通过每次手机检测到与学校网络的连接(检查SSID)向用户数据发送一个HTTP post请求来自动登录网络的过程,很容易的蛋糕,对吧?事情是我不知道从哪里开始,Android是一个非常广泛的环境,所以我在这里要求您提供指导。我做了一些关于它的功课,这是我到目前为止:Android Wifi监听器策略

  • 我可以使用连接管理器意图使用BroadcastReceiver启动应用程序。我认为这可能会给我太多的意图,我不需要,因为我只需要Wifi。我读过它here
  • 我可以使用AndroidHTTPClient进行HTTP请求。

我计划的流程如下:用户首次打开该应用程序时,他输入用户名和密码,还有用于自动连接一个切换按钮,当你按下改变为“断开”它(因为您一次只能使用相同凭证连接一台设备,它会向网络的注销页面发送请求)。系统处于自动连接模式时,每次手机连接到学校网络时,即使应用程序未运行,它也应发送请求。

  • 首先,这种问题最好的办法是什么?
  • 我应该在哪里(以及何时)存储证书?
  • 我应该在哪里提出请求?在Receiver的onRecive()中?在活动中?

我知道这就像要求你解决我的问题,但我想在这里学习,我需要指导,以使我能用这个软件做到最好。我非常感谢你的输入:)

+0

https://github.com/bradfitz/android-garage-opener/blob/master/src/com/danga/garagedoor/GarageDoorActivity.java 这是一个无线监听器的工作示例。 – Pachonk 2012-04-22 21:41:21

回答

2

我会实现一个服务,实现一个BroadcastReceiver来检查互联网连接的变化,它配置一个AsyncTask并执行它以向登录服务发出正确的请求。

您是否确认这是否可能?您是否了解HTTP请求的正确参数?你可以使用卷曲进行身份验证吗?

我不知道Android是否有一个体面的有价值的信息存储机制,但实质上你在哪里保留证书取决于安全风险的水平。我现在不会太在意这一点 - 假设这些密码没有价值,应用也不会广泛传播。无论如何,你可以将一个二进制序列存储在一个静态变量中,并将其与用户密码进行XOR并将其存储在另一个静态变量中。这对于简单的内存扫描应该足够了。我没有提及写入文件,因为我认为这种方式在安全性方面风险太大。

顺便说一下,这看起来像一个很好的应用程序的想法。你有没有检查是否有人已经做到了这一点?

+0

谢谢!是的,这是可能的,事实上我已经为Linux笔记本做了一个bash脚本,它的功能就像一个魅力。 用户信息并不是那么大,因为发布的请求是使用HTTP而不是HTTPS创建的,我想在一个简单的SQLiteDatabase中存储它们。 关于其他应用程序,我知道校园里的某个人做了一个iOS应用程序,并在github上发布了代码,但iOS和Android是不同的野兽。 – fixmycode 2012-04-22 22:24:57

+0

关于服务的事情,我还需要一个活动来要求凭证,不是吗? – fixmycode 2012-04-22 22:30:14

+0

是的,您需要一个让用户输入凭据的活动。 – 2012-04-23 08:56:59