1

我是 Android 开发新手,我需要一些帮助来解决以下问题:我大学的 Wi-Fi 网络有一个强制门户,要求您输入用户名和密码才能访问学校的系统,所以我想我可以自动化每次手机检测到与学校网络的连接(检查 SSID)时,通过向门户网站发送带有用户数据的 HTTP 发布请求来登录网络的过程,很简单,对吧?问题是我不知道从哪里开始,Android 是一个非常广泛的环境,所以我在这里向您寻求指导。我对此做了一些功课,这就是我到目前为止所得到的:

  • 我可以使用带有 Connectivity Manager Intent 的 BroadcastReceiver 启动应用程序。我认为它可能会给我太多我不需要的意图,因为我只需要 Wifi。我在这里读到了
  • 我可以使用 AndroidHTTPClient 发出 HTTP 请求。

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

  • 首先,解决这类问题的最佳方法是什么?
  • 我应该在哪里(以及何时)存储凭据?
  • 我应该在哪里提出请求?在接收方的 onRecive() 中?在活动中?

我知道这就像要求您解决我的问题,但我正在尝试在这里学习,我需要指导以尽我所能使用此软件。我非常感谢您的意见:)

4

1 回答 1

2

我将实现一个实现 BroadcastReceiver 的服务,以检查配置 AsyncTask 并执行它以向登录服务发出正确请求的 Internet 连接的更改。

你检查这是否真的可行?您了解 HTTP 请求的正确参数了吗?你可以使用 curl 进行身份验证吗?

我不知道 Android 是否有一个像样的机制来存储有价值的信息,但基本上你保存凭据的位置取决于安全风险的级别。我暂时不会对此给予太多关注 - 假设这些密码没有价值并且应用程序不会广泛传播。无论如何,您可以将二进制序列存储在静态变量中,然后将其与用户密码进行异或,然后将其存储在另一个静态变量中。这对于简单的内存扫描应该足够了。我没有提到写入文件,因为我认为这种方式在安全性方面风险太大。

顺便说一句,这看起来是一个不错的应用创意。你检查过是否有人已经做过这个吗?

于 2012-04-22T22:02:33.503 回答