实施课程时间表(基于技术学术事务系统)
1。这个小型系统为大学生提供服务。用户可以根据代码在手机上自定义并安装自己的轻质课程应用程序(当然,他们可以将一些修改向网络请求移植到PC或Web平台)。
2.好处:您不再需要下载30至60MB的应用程序,以查看手机上的课程时间表并拥有各种干扰信息。同时,许多学术事务系统只能使用IE登录。这很烦人吗?
3。在这里,我们尝试制作一个简单的课程时间表查询()。当然,这里提到的网络请求很明确,可以实现基于学术事务系统周围领域的更有趣的应用程序。
4。可以在其上查看源代码。如果您有任何疑问,也可以 @ me
目前,学术事务网络的界面发生了变化,现有代码无法直接运行。我将来没有上传最新的代码。现有代码可以用作参考。如果您有任何疑问,请通过电子邮件向我询问。
阅读之前
当然,此登录接口相似
这是该界面的课程时间表界面的直接发布(这是学年的ID,ZC是每周):.do?= 2018-2019-1&ZC = 12
源代码说明
该代码的最终数据表示平台是在分析界面和获取数据期间,它将解释如何在接口上展示它。当然,您也可以根据网络和PC侧进行操作。
该代码仍然不足,将来会更新。我们可以继续关注它:在学期之间灵活切换;验证代码识别。
如果您有任何疑问,请 @我,
代码模块分析1。网络请求
学术事务系统中登录的三个共同元素:帐户,密码和验证代码(提示:某些系统没有验证代码,使其更容易实施;我学校的学术事务系统中有学生和父母选择,因此默认情况下只是设置学生)
有了提到的三个要素,我们可以输入学术事务系统进行各种操作。以下是分析网络请求。
打开浏览器(我们在此处使用浏览器,当然有类似的操作),输入学术事务网络的登录接口,按F12弹出开发人员工具,然后单击学术事务的请求路径名称在最左侧的网络,您可以看到(请求)头)。 (如果您无法通过单击看到任何东西,只需在开发人员工具开放的前提下刷新学术事务网络)。当然,请求标题中最重要的是。
[外部链路图像传输失败,源位点可能具有防盗链路机制。建议保存图像并将其直接上传(img--35)()]
这是登录的唯一标识符。换句话说,登录,保存并使用此(在生存期间)以访问学术事务系统下的任何地址的数据和数据。
在这里,我们可以进行一个小实验来验证这一观点。该实验是可以理解的,并且可以登录到学术事务网络以模拟后续计划也是可以理解的。
假设我的学术事务网络地址是:/jww/,我成功登录并跳到/jww//main.jsp,复制成功登录时使用的值。在浏览器上打开一个新的选项卡页面,然后输入学术事务网络地址: / jww /。目前(通常)没有登录。我们再次打开开发人员工具。这次我们不点击。我们单击,双击该值,然后对其进行修改。这是我们之前登录的值(如下图所示),然后用我们要在登录后要访问的地址的地址栏的地址(例如,登录后跳过的地址)然后按!我们已经登录了学术事务系统并进入了系统!
[外部链接图像被转移给公众失败。源部位可能具有反盗用链路机制。建议保存图像并将其直接上传(img--40)()]
以下是登录学术事务网络的核心代码。
Connection loginConn = Jsoup.connect(loginHomePage); loginConn.cookies(cookies); //login using cookies loginConn.data(reqData); //login parameters Connection.Response loginResponse = loginConn.execute();
注意:库非常简单,在这里使用不多,因此可以通过代码说明易于理解。
这是学术事务网络形式的属性值(在查看源代码时可以看到它),这是要以我们形式提交的URL地址。
如果我们直接查看代码的第四行,请评论三行,然后获取一条,我们可以打印出的内容都是HTML代码,并且根本没有图片。也就是说,我们必须单独请求图像,保存返回请求的图像,然后在登录时使用此图像登录。
现在的想法是:如果我们想登录,我们必须首先请求并下载验证代码图片,在请求图像时获取返回的图像,并使用此图片添加我们根据我们填写的帐户,密码和验证代码对于下载的图像,这些参数已提交到服务器以进行登录。
因此,我们可以完善我们的代码:
//all static for convenience //file request parameters static String personType = "0"; //0-我是学生, 1-我是家长。 很多教务网都没有这个字段,可忽略掉 static String userNumber = "****"; //你的账号 static String password = "****"; //你的密码 static String verifyCode = ""; //验证码默认设置为空,后续通过用户的输入来填充这个值 //登陆请求的地址 final static String loginHomePage = "http://kkk.edu.cn/jww/Logon.do?method=logon"; //验证码请求地址
代码首先称为kie(,);要请求验证代码图片,并将其保存到桌面,同时保存返回的图片。然后使用新的(.in)。()获得用户输入的验证代码(将其下载到桌面后可以易于打开,可以通过肉眼识别)。
最后登录并打印由登录请求返回的HTML源代码。
我们发现,当我们输入错误的验证代码(或错误的帐户或密码)时,打印了登录接口的HTML源代码。当我们成功登录时,返回的内容非常简单:。基于此,我们很容易判断我们是否已成功登录。
以上是网络请求的整个分析过程。
可以在平台上显示更多数据以查看源代码。您还可以查看以下效果图。