项目地址: https://github.com/hwding/AeolosXDUWidget求支持(╭ ̄3 ̄)╭♡本小白所在的学校虽身为某某电子科技大学, 但是网络基础设施实在是...用于查询的各个网页根本用的不是一套系统...也就是说, 如果你想很方便地获取你的实验成绩\体育 ...
项目地址: https://github.com/hwding/AeolosXDUWidget
求支持(╭ ̄3 ̄)╭♡
本小白所在的学校虽身为某某电子科技大学, 但是网络基础设施实在是...用于查询的各个网页根本用的不是一套系统...也就是说, 如果你想很方便地获取你的实验成绩\体育打卡次数\校内一卡通的流水情况和余额以及水电费的使用情况\图书馆借还信息等等, 你得登录很多不同的网页使用多套不同的系统输入不同的账户与密码...(不想吐槽某些系统居然还外包给另外一个某某电子科大...)
所以能不能用一种便捷的方法将重要的信息及时呈现和刷新呢?
根据这个需求给自己做了一个小部件放在手机桌面上, 真的很方便! 真的很方便! 真的很方便!
下面放两张预览图
这样一来小部件的功能就一目了然了
只要绑定相关账号就能自动获取最新的数据
原理很简单, 无非是登录之后拿到cookie然后去解析相关的页面, 最后呈现数据
由于用了以前自己造过的一个小轮子, 就是一个用于查询各个模块数据的接口, 所以这个部件的代码量大幅缩减
接口项目地址: https://github.com/hwding/libXDUQuery
下面说一些零碎的知识点
关于验证码:
制作中遇到的一大困难就是查询一卡通流水的系统必须要输个验证码
首先打开登录页面的时候服务器会塞一个Cookie过来, key为JSessionID, 用于当前会话的凭证
带着这个Cookie去访问一个用于返回验证码的页面, 会得到一张验证码图片, 此时服务器端当前会话的验证码也刷新了
提交用户名密码的时候带着这个验证码, 只要服务器端的验证码与你提交的验证码是一致的就可以返回一个有效的Cookie
然后再用这个Cookie去访问查询页面就OK了
当然还有验证码图片缓存的问题, 需要 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 这个权限
缓存方法:
1 public void getCaptcha(File file) throws IOException { 2 URL url = new URL(HOST + CAPTCHA_SUFFIX); 3 URLConnection urlConnection = url.openConnection(); 4 urlConnection.setRequestProperty("Cookie", "JSESSIONID="+JSESSIONID); 5 urlConnection.connect(); 6 InputStream inputStream = urlConnection.getInputStream(); 7 byte[] bytes = new byte[1024]; 8 FileOutputStream fileOutputStream = new FileOutputStream(file); 9 int LENGTH;10 while ((LENGTH = inputStream.read(bytes)) != -1){11 fileOutputStream.write(bytes, 0, LENGTH);12 }13 inputStream.close();14 fileOutputStream.close();15 }
原标题:将学校摆在桌面上
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。