论文指导

Web服务下Android移动端辅助教学软件的开发

  摘    要: Web服务借助于HTTP、XML、SOAP和WSDL等开放性标准规范,提供了在各种平台、系统和软件之间进行互操作的标准方法。研究了在标准环境中使用JAX-WS API创建Web服务的方法,以及在Android环境中使用Ksoap2库对Web服务进行调用的步骤,设计了Android移动端辅助教学软件,实现了学生信息管理、问卷管理、公告管理和即时通信等辅助教学功能。实践表明,Web服务在移动应用开发中作为后台支撑环境,简化了开发工作,提高了开发效率,增强了应用系统的稳定性和可靠性。
  
  关键词 :      Web服务,JAX-WS; Ksap2 Android,
  
  Abstract: With the help of open standard specifications such as HTTP, XML, SOAP and WSDL, the Web service provides a standard method for interoperability among various platforms, systems and software. By using JAX-WS API, this paper studies the method to create Web Service in a standard environment, and the steps are adjusted by using the Ksoap2 library to call Web Service in an Android environment. The Android auxiliary teaching software is designed to realizes the auxiliary teaching functions such as student information management, questionnaire management, announcement management and instant messaging. Practice has shown that as a back-end support environment in mobile application development, Web service simplifies development work, improves development efficiency, and enhances the stability and reliability of application systems.
  
  Keyword: Web service; JAX-WS; Ksoap2; Android;
  
  0、 引言
  
  Web服务是通过超文本传输协议(HTTP)进行通信的客户端和服务器应用程序,它提供了在各种平台和框架上运行的软件应用程序之间进行互操作的标准方法。从软件架构的角度来看,Web服务由一组能够彼此通信的服务集合组成,这种架构被称为面向服务的体系结构,适合于开发松散耦合的应用程序,可以对不同操作系统、不同业务平台、不同编程语言开发的各种程序组件进行高效集成。
  
  1、 Web服务
  
  Web服务的互操作性和扩展性来自于众多开放标准规范[1],如XML(Extensible Markup Language, 扩展表示语言)、SOAP(Simple Object Access Protocol, 简单对象访问协议)和WSDL(Web Services Definition Language, Web服务描述语言)。XML是标准规范的基础,用于构建和描述其它标准规范,如SOAP和WSDL均为严格的XML文档。SOAP是一种消息规范,定义了信封结构、编码规则以及用于表示Web服务调用和响应的约定,调用Web服务的SOAP消息在HTTP通道上进行传输。WSDL是用于描述Web服务合约的规范。Web服务合约提供了与Web服务进行交互的所有详细信息,包括对消息、操作、绑定、服务接口等组成部分的详细描述,客户端明确Web服务合约后能够正确发起调用请求并获取返回结果。
  
  Web服务内部结构如图1所示。
  
  一个Web服务可以包含多个port(也称为endpoint, 端点),每个port是接口与URL的二元组。
  
  接口可以包含多个操作,接口绑定是接口与其操作在构造SOAP消息时消息格式和编码方式的说明。客户端通过Web服务公开的URL连接指定port, 调用其功能(操作);被调用的操作访问后台资源后将结果返回给客户端。客户端与Web服务间的调用和响应体现为相互之间交换SOAP消息。
  
  2、 JAX-WS创建Web服务
  
  2.1、 JAX-WS介绍
  
  JAX-WS(Java API for XML-Based Web Services)属于Java标准规范JSR224,是Java平台用于支持Web 服务开发工作的一组标准API。Web服务开发涉及处理SOAP消息和WSDL文档,过程较繁琐。而JAX-WS简化了开发工作,隐藏了SOAP和WSDL等技术细节的复杂性,自动实现了Java语言与XML相关标准的映射。
  
  使用JAX-WS开发Web服务和客户端时,无需构造和分析SOAP消息,这一切均由JAX-WS运行时代为完成,如图2所示。
  
  开发过程仅涉及Java相关的语义概念,如接口、方法调用和数据类型等,不涉及Java与XML之间的映射和转换。JAX-WS使得开发过程更多聚焦于业务逻辑层面。
  
  2.2 、JAX-WS创建Web服务方法
  
  使用JAX-WS创建Web服务主要包括3个步骤:定义Web服务结点接口、实现Web服务以及发布Web服务[2]。下面结合Android教学系统具体应用详细阐述创建Web服务的方法。Android教学系统需要对学生账号进行管理,因此设计的Web服务需具备添加学生、删除学生、修改学生信息和学生登录等功能。
  
  (1) 定义Web服务结点接口
  
  package upc.teaching;
  
  @WebService public interface WS {
  
  @WebMethod int AddStud(int ID, String name, String pwd);
  
  @WebMethod int DeleteStud(int ID);
  
  @WebMethod int ModifyStud(int ID, String name, String pwd);
  
  @WebMethod boolean StudLogin(int ID, String pwd);
  
  }
  
  代码首行指出了当前Java程序的包名upc.teaching, 包名反转后形成Web服务的名称空间http: //teaching.upc。Java接口WS前方的标注@WebService指出该接口为Web服务节点接口(Service Endpoint Interface, 简称SEI),接口中的4个方法前方的标注@WebMethod指出这些方法为Web服务中可被调用的操作。
  
  (2) 实现Web服务
  
  package upc.teaching;
  
  @WebService(endpointInterface = "upc.teaching.WS")
  
  public class WSImpl implements WS {
  
  ……
  
  public boolean StudLogin(int ID, String pwd) {
  
  连接数据库Stud表
  
  以ID和pwd作为筛选条件查询stud表中的元组
  
  if (查询结果为空)
  
  return false
  
  else
  
  return true
  
  }
  
  }
  
  类WSImpl需要具体实现接口WS的全部方法,标注@WebService同时指明了该类对应于前文的Web服务节点接口WS。方法StudLogin(学生登录)使用伪代码描述了其业务逻辑。
  
  (3) 发布Web服务
  
  生产环境中,可将实现的Web服务打包成Java WAR((Web ARchive)文件,部署到Tomcat、Jetty或Undertow等Java Serverlet容器中,或者部署到JBoss、Wildfly或GlassFish等J2EE应用运行环境中。测试环境中,可直接使用Endpoint类进行发布,代码如下。
  
  public static void main(String[] args) {
  
  Endpoint.publish(
  
  "http: //localhost: 8080/WS", new WSImpl ());
  
  }
  
  Endpoint的publish方法需要2个参数,Web服务的URL地址和Web服务的实现类。程序运行后,指定的Web服务将在地址http: //localhost: 8080/WS发布。
  
  通过浏览器访问Web服务地址,可得到Web服务的总结信息,如图3所示。
  
  图3 Web服务总结信息
  
  总结信息包括服务名、端口名、服务地址、WSDL地址和Web服务的实现类名等。
  
  3 、Android应用调用Web服务方法
  
  Android系统通常使用在手机、平板等嵌入式设备中,与桌面系统相比,嵌入式系统资源受到限制。因此Android SDK中并没有提供JAX-WS运行时,开发中常引入开源的Ksoap2库对Web服务进行调用。下面以调用Web服务中的StudLogin方法为例说明其调用过程[3]。
  
  (1) 生成调用Web服务操作的SOAP消息
  
  SoapObject request =new SoapObject("http: //localhost: 8080/WS","StudLogin");
  
  request.addProperty("ID", "value");
  
  request.addProperty("pwd", "value");
  
  SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
  
  envelope.setOutputSoapObject(request);
  
  代码根据Web服务地址和操作名StudLogin建立Soap消息对象,并按顺序加入ID和pwd两个参数,最后把Soap消息放入Soap信封完成封装。
  
  (2) 发起对Web 服务操作的调用
  
  HttpTransportSE ht=new HttpTransportSE("http: //localhost: 8080/WS?wsdl");
  
  ht.call("http: //localhost: 8080/WS/StudLogin", envelope);
  
  代码根据WSDL文档获取Soap消息的绑定方式后,再以Web服务指定的绑定方式发起相关调用。
  
  (3) 接收并处理调用结果
  
  SoapObject result= (SoapObject) envelope.getResponse();
  
  if (result.toString() == "true")
  
  显示登录成功
  
  else
  
  显示登录失败
  
  这里,调用Web服务的返回值为SoapObject对象类型,通常将其转换为字符串后再进行后续处理。
  
  4 、Android教学系统设计
  
  基于Web服务原理及编程方法,笔者设计实现了Android移动端辅助教学软件,主要提供学生信息管理、问卷管理、公告管理和即时通信等教学相关功能[4,5,6]。系统架构如图4所示。
  
  图4 Android辅助教学软件系统架构
  
  服务器端使用Oracle数据库存储和管理数据,并通过JAX-WS技术部署标准服务接口供客户端调用,支持客户端请求的各种操作;客户端基于Android平台开发,向教师和学生提供了各功能模块的UI界面,并通过Ksoap2库向服务器端的Web服务接口发起调用请求,与服务器端完成信息交互。
  
  Android辅助教学软件部分界面如图5所示。
  
  图5 Android辅助教学软件部分界面
  
  其中,图5(a)为用户登录界面;图5(b)为教师编辑题目的界面;图5(c)为学生答题界面。
  
  5、 总结
  
  随着网络带宽的提升和移动终端的进一步普及,手机、平板等智能设备正悄悄改变着人们的生活、工作和学习方式。各种教学类App逐渐被师生所接受,作用逐渐突显,推动了授课模式的变革。在此背景下讨论了Android辅助教学应用的开发方法,介绍了标准环境中Web服务的创建步骤,以及Android环境中对Web服务的调用流程。实践表明,Web服务在移动应用开发中作为后台支撑环境,简化了开发工作,提高了开发效率,增强了应用系统的稳定性和可靠性。
  
  参考文献
  
  [1]尹兆冰,王加阳. Web Service及其关键技术研究综述[J]软件导刊, 2010,9(2):121-123.
  
  [2]谭钦红,黄茂碟,张作运基于Android的情报管理系统设计与实现[J]微型机与应用, 2017 ,36(2):100-103.
  
  [3]庞国明Android利用Soap协议跨平台调用服务方法[J].电脑编程技巧与维护,2014(1):32-36.
  
  [4]常资杰,张位勇,李桂香基于Web Service的智能家居系统设计与实现[J].计算机时代, 2017(3)44-47.
  
  [5]范伦杰,张余强,罗彬彬基于Web Service的油气田信息服务构建[J]智能计算机与应用, 2020,10(1):156-159.
  
  [6]余海洋,朱莹莹,张贵玲移动教务管理系统的设计与实现[J].当代教育实践与教学研究, 2019(22):9-10.
在线客服