在移动互联网时代下,针对传统的高校教务查询系统不兼容手机和平板等设备的移动访问问题,在不变更已有PC版教务系统的基础上分析并设计了一种简单便捷的移动教务查询系统,这也是移动时代下传统校园教务系统向移动智能终端的延伸。首先,研究了HTTP请求分析、HTTP响应分析、HTML消息体解析等HTTP分析模拟技术及方法,然后以教务系统的HTTP成绩查询为例,阐述基于HTTP分析模拟技术的Java开发过程,重点给出HTTP学生成绩查询实现过程中的关键设计思想及步骤,为最终开发实现多功能教务信息移动查询系统提供了重要指导。 In the mobile Internet era, in order to tackle that the issue of conventional educational administration query system was not compatible with mobile access based on mobile phones and tablet computers, this paper designed a mobile educational administration query system based on the existing educational administration system. It is an extension of conventional campus educational administration system to mobile intelligence system. We first investigate the HTTP parsing and simulation techniques, including HTTP request parsing, HTTP response parsing and HTML message body parsing. Then, taking the HTTP student score query as an example, we introduce the Java development process based on these HTTP parsing and simulation techniques. The key design ideas and procedures are analyzed and provided, which can provide the guidance for the actual development of a multifunction mobile educational administration query system.
徐海蛟,张展鸿,周奕龙
广东第二师范学院,计算机科学系,广东 广州
收稿日期:2019年7月31日;录用日期:2019年8月15日;发布日期:2019年8月22日
在移动互联网时代下,针对传统的高校教务查询系统不兼容手机和平板等设备的移动访问问题,在不变更已有PC版教务系统的基础上分析并设计了一种简单便捷的移动教务查询系统,这也是移动时代下传统校园教务系统向移动智能终端的延伸。首先,研究了HTTP请求分析、HTTP响应分析、HTML消息体解析等HTTP分析模拟技术及方法,然后以教务系统的HTTP成绩查询为例,阐述基于HTTP分析模拟技术的Java开发过程,重点给出HTTP学生成绩查询实现过程中的关键设计思想及步骤,为最终开发实现多功能教务信息移动查询系统提供了重要指导。
关键词 :HTTP分析,模拟登录,移动教务查询系统
Copyright © 2019 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
随着我国高等教育的快速发展,教务管理工作成为高校日常校务的重要环节,高校教务查询系统的建设也成为完善高校教务信息管理的必经之路 [
HTTP是Hyper Text Transfer Protocol (超文本传输协议)的缩写,它的发展是万维网协会和Internet工作小组IETF (Internet Engineering Task Force)合作的结果,最终发布了一系列的HTTP RFC标准版本,其中最著名的就是RFC 2616标准版。RFC 2616定义了普遍使用的一个版本——HTTP 1.1。HTTP是一个属于应用层的面向对象的TCP/IP协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP协议的主要特点可概括为:支持B/S模式;服务简单高效;数据对象类型灵活;无连接通信方式;无状态工作协议。HTTP是一个基于请求与响应模式的、无状态的应用层协议,常基于TCP的连接方式,目前大多数的Web开发是构建在HTTP协议之上的Web应用。高校使用的教务信息系统主要是正方教务等HTTP Web应用 [
HTTP协议是由Web客户端发起请求,服务器回送响应。一次HTTP交互操作称为一个事务,其工作过程可分为四个步骤。以Web教务查询为例,1) 首先客户机与Web服务器需要建立连接。当输入教务系统的URL (Uniform Resource Locator)网址或单击其超链接,则HTTP交互工作开始;2) 客户机发送一个请求给教务系统服务器,请求方式的格式为:URL网址、协议版本号、MIME信息(包括请求修饰符、客户机信息和其他可能的内容);3) 教务系统服务器给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和查询内容;4) 客户端接收Web服务器所返回的结果数据并通过浏览器界面显示,最后客户机与教务系统服务器断开连接。
HTTP请求由三部分组成,分别是:请求起始行、请求消息头、请求消息体 [
在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:响应状态行、响应消息头、响应消息体。响应状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF,其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。响应状态行包括了HTTP协议版本、HTTP状态码和状态等重要信息,其中HTTP状态码是判断请求结果的重要标准。响应消息头允许服务器传递不能放在响应状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。它包含各种属性,其中Cookie信息是较为重要的一个标记用户的属性,Cookie能让网站“记住”访问者的身份,如若有了Cookie,用户就不需要每次都输入密码进入系统,是Web应用保存用户身份的常见工具。响应消息体是服务器返回的HTML正文信息,通过解析响应消息体中的HTML就能获取需要的数据信息。
用户在使用教务系统应用时,通过多次这样的HTTP交互过程,完成教务HTML应用数据的传递和查询。因此,可以通过对交互过程中的浏览器向教务系统发出的HTTP请求以及教务系统返回的响应消息体进行HTTP分析,探究教务系统Web应用交互的规律。利用这种HTTP分析模拟技术,模拟用户发送HTTP请求到教务Web系统,并对Web教务系统HTML格式的响应消息体进行解析、清洗、定位,获取用户需要的目标数据,最终呈现于移动端用户界面,完成基于分析模拟的HTTP交互流程。
Web教务系统服务器返回的HTTP响应消息体是一个HTML半结构化网页数据。HTML是用来描述多媒体网页的一种超文本标记语言,包含很多由尖括号包围的HTML标记,其含有所需的教务应用数据。HTML语法是由W3C组织创建的规范中进行定义的,其语法格式是由DTD (Document Type Definition)定义的,该格式定义了允许的元素、属性和层次结构。因为HTML响应数据的包容性语法特性,以及在解析过程中存在动态脚本如document.write()会改变HTML内容,导致无法使用自上而下或是自下而上的解析。HTML解析过程首先是词法分析即HTML标记化,整体算法的核心是解析状态机的改变,即解析过程中由状态机标识当前的状态到了哪一个解析阶段。其次,构建文档对象模型(Document Object Model,简称DOM)树 [
以我校正方教务系统的HTTP 成绩查询为例,讲述基于HTTP 分析模拟技术的Java 开发过程,重点 给出HTTP 学生成绩查询实现过程中的关键设计思想。移动端网络框架Java OKhttp [
移动教务查询系统首先需要验证学生身份,包含一个HTTP模拟登录模块。通过对用户登录的HTTP交互报文分析,发现浏览器向中央认证服务器以POST的方式发送了一个HTTP请求。教务查询系统HTTP请求消息体中的HTML表单传递了username、password和service三个关键参数,其中,username代表用户的账号名,即在校学生的教务系统账号;password代表该账号的密码;service是一个固定的网址,表示登录到教务系统的管理页面。假若用户名及密码验证成功,认证服务器会返回一个含有JavaScript脚本的页面,它重定向到带有ticket属性的网址。由于HTTP模拟登录技术采用的移动端Java OKhttp网络框架不会自动执行JavaScript脚本,因此需要对JavaScript脚本进行内容分析以确定重定向网址,之后模拟执行URL跳转。首先,通过Java Jsoup组件获取此页面中JavaScript的网络地址URL,然后通过HTML GET方法访问URL网址,从而实现模拟重定向页面跳转。假若用户名及密码验证失败,则返回登录失败页面,此时可在用户界面上提示用户名密码错。
模拟重定向访问JavaScript所含URL网址后,教务服务器会返回一个状态码为302 (重定向)的HTTP响应报文,二次重定向地址正是该报文的HTML a标签中的URL地址。由于该二次重定向行为不是JavaScript脚本执行的,所以需要根据Java OKhttp网络框架的重定向自动与否属性设置来判断是否需要通过HTML GET访问该HTTP响应报文中a标签所含有的URL网址。二次重定向后,返回一个含有JavaScript脚本的HTML页面,分析该JavaScript脚本的含义,发现其将打开一个路径为/xs_main.aspx?xh=(/学号)的HTML页面。因此,在OKhttp网络框架中使用GET方法打开该URL网址,第三次URL重定向而进入教务系统个人主页,完成HTTP模拟登录。假若返回的HTML页面head标题为“正方教务管理系统”,且可以在id为xhxm的span 标签中发现学生的姓名,则表明移动端HTTP模拟登录成功。登录进入个人主页后,可缓存用户个人信息到个人Session对象中,以便跨功能模块使用,整个流程如图1所示。
图1. HTTP 模拟登录流程图化
查询学期课程成绩是学生最常用的教务功能之一。HTTP成绩查询的前置条件是已登录。当移动端完成HTTP模拟登录后,在Session对象中保存着用户名、密码等个人信息,可直接获取Session对象中的个人信息进行查询。假若用户未登录,Java拦截器会拦截查询请求,并强制跳转到登录界面,要求用户执行HTTP登录。通过分析成绩查询的HTTP交互信息,发现浏览器向服务器以POST方式发出了一个HTTP请求,传递了ddlXN、ddlXQ、Button1、_VIEWSTATE四个HTML关键表单参数。此外,还以GET查询串方式向服务器提交了xh、xm和gnmkdm三个HTML关键参数。
HTML表单参数ddlXN和ddlXQ分别表示成绩查询的学年和学期。HTML表单参数Button1属于固定值,用于服务器标识查询的内容。_VIEWSTATE表单参数是ASP.NET的视图状态值,用于保存会话的Base64编码值,在HTML报文中是一个隐藏域表单数据,表示HTTP交互过程中需要向Web服务器中传递的_VIEWSTATE参数。GET查询串参数xh和xm分别表示学号和姓名,对于中文姓名,通过网络传递UTF-8类型的中文字符,会导致乱码。因此,HTML使用URLEncoder将xm参数进行URL编码,转换为application/x-www-form-urlencoded MIME字符串来传递。GET查询串参数gnmkdm作用同Button1。
在教务系统返回的HTTP响应报文中,查找class属性为datelist的table标签,含有对应学期、学年的成绩信息。每个tr标签包含一个课程成绩信息,每个td标签包含一个基本单元课程成绩信息。利用Java Jsoup可解析和定位目标成绩数据。首先使用Jsoup select选择器查找_VIEWSTATE参数值,然后向教务系统以POST方式提交查询表单,发出HTTP成绩查询请求。最后,系统返回成绩表响应报文,通过Jsoup定位HTML成绩表格,获取表格所有tr元素,循环遍历每个tr元素,可得课程成绩数据表。
RESTful API 是一个API 设计规范,适于HTTP 成绩查询这类轻量级的前后端数据接口设计,Java 技术实现RESTful 接口有三种方法:HttpClient 实现、HttpURLConnection 实现、SpringRestTemplate 实现 [
HTTP 成绩查询的前置条件是用户已登录,当Java 拦截控制器检测发现Session 对象未含有用户登录 信息,则拦截查询请求之后强行跳转至登录页面,要求移动客户执行HTTP 登录。当移动端已完成HTTP 模拟登录,Java 控制器可直接提取保存于Session 对象中的用户信息进行成绩查询。由于成绩查询RESTful API 返回的学生成绩数据格式,不是纯文本而是一个Json 通用数据交换格式[
通过Android SDK API或微信小程序API等移动开发技术提供对移动端开发支持,将返回的Json格式成绩列表GradeList以简洁便利的方式展示在移动终端如手机等,查询效果如图2所示。
图1. 学生成绩查询示例
为支持高校教务信息移动查询需求,设计了一种基于HTTP分析模拟技术的移动教务查询系统。文中以HTTP成绩查询为实例,讲解了HTTP分析模拟程序的关键思路与方法。类似地,还可开发HTTP课表查询、HTTP校园卡消费查询以及HTTP图书借阅查询等,最终实现多功能教务信息移动查询系统。
2019年广东第二师范学院校级教学质量与教学改革工程项目(编号:2019jxgg18);广东第二师范学院软件工程重点学科建设项目(编号:9030-1700207);广东省自然科学基金项目(编号:2018A0303130169);广东省科技计划项目(编号:粤财农[