J I A N G S U  U N I V E R S I T Y
    题目:Web Services 实验报告
所属学院:  计算机学院     
专业班级:  软件1201       
*    **      **         
学    号:  **********     
题目一:
调用第三方web Service的接口实现便民信息的查询,例如天气预报或者火车信息。
一.  实验要求
编写客户端,调用第三方Web Service提供的接口,实现对基本信息的查询。
二. 运行环境
Windows8 + Eclipse( JDK 8.0)
三.实验原理及过程
1.新建Java Project,项目名称为“天气查询”,新建包 com.soap(放置跟web service服务调用相关的类)和包com.ui(放置跟UI界面编程相关的类)。
2.在com.soap包下新建类名为WeatherServices的Java文件。该类的作用调用中国天气网提供的免费接口"www.webxml/WebServices/WeatherWS.asmx",实现对城市的天气的实时查询。
中间用到的方法主要有:
(1)getSoapRequest(String city).这个方法的作用是得到一个Soap请求。
项目结构如图:
(2)getSoapInputStream(String city )
这个方法是通过调用上述免费接口获得
URLConnection连接对象,并对Soap       
输入流进行相关的设置,包括编码格式等。
(3)getWeather(String city)。解析xml,获取相应的信息。由于查询后返回的原始结果是一个xml文档,因此需要对该文档进行DOM解析,从而获得我们需要的信息。
3.在com.soap包下新建MobileService.java文件,用来实现对手机号码基本信息的查询。使用的接口是:webservice.webxml/WebServices/MobileCodeWS.asm x?wsdl
    4.在com.soap包下新建EmailService.java,实现对邮箱地址的验证。采用的接口是:
www.webxml/WebServices/ValidateEmailWebService.asmx?wsdl");
5.在com.ui包下新建类名为MainFrame的Java文件。实现客户端的可视化布局。
里面设计的主要函数包括:
    (1)MainFrame(String string)。这是一个构造方法,对窗体进行简单的初始化,以及为相应的控件添加事件监听及响应。
四.运行效果
题目二
  自定义web service,并将其发布,然后编写客户端,调用该web service。
一. 实验要求
编写客户端,调用第三方Web Service提供的接口,实现对基本信息的查询。
二. 运行环境
Windows 7旗舰版 + Eclipse( JDK 8.0)
三.实验原理及过程
该实验需要自己编写相应的服务器端和客户端。而我要实现的功能是在客户端窗体输入学号,然后通过调用web service来返回学号对应的学生的姓名。实现服务的发布的方式有很多种,例如用Axis2来实现。其实,JDK本身就提供了Web Service服务发布的方法,就是jax-ws。具体实现的过程如下:
1.服务器端
(1)新建Java Project,项目名称为:webServervices_student_server。在该项下新建包com.webservice.server。
(2) 在包中新建一个接口StudentInterface,在接口中声明一个查询的方法studentQuery(int number);
(3)新建StudentInterface接口的实现类StudentInterfaceImp,在类中实现StudentInterface接口中的查询方法studentQuery(int number)。Main方法中的Endpoint.publish("127.0.0.1:54321/student", new StudentInterfaceImp())方法是发布服务。其中127.0.0.1:54321/student是在本地自定义的RUL,54321是服务的端口号。
(4)运行该程序,会看到会打印以下提示信息,说明该服务已经启动:
(5)接下来要做的就是要生成WSDL文件。在浏览器地址栏中输入127.0.0.1:54321/student?wsdl,回车,会看到以下所示界面,说明已经将服务发布成功。
2.客户端
(1)为了模拟远程调用,新建Java Project,项目名称为:webServervices_student_client。
在该项下新建包com.webservice.client。由于采用的是jax-ws,所以在客户端还需要用到按照上述的wsdl规格约束编译的 .java文件。具体的实现如下:
1)新建一个java 项目wsimport,该项目可以用来专门放置其他项目的编译文件。到该项目的src的绝对目录F:\Eclipse for javaee\wsipport\src.
2)在cmd命令窗口运行cd F:\Eclipse for javaee\wsipport\src,进入该目录下;
3)接着输入命令:wsimport –s . 127.0.0.1:54321/student?wsdl。注意中间的空格,回车后,结果如:
(2)返回wsimport项目,右键刷新,会看到多出来一个包,这个包的名字和之前的服务器端的包名一致。将该包原封不动复制到该客户端的src目录下。
(3)新建Client窗体类,实现客户端的编程。整个客户端的项目结构如下:
四.运行效果
调用webservice服务
实验感想
    第一次接触Web Service这个概念,感觉还是挺陌生的。之前有听说过便民查询服务,而且也亲身用过。查阅了很多资料,才知道这些功能就是用Web Service来实现的。大概了解了相关的知识和调用第三方的服务接口的流程后,才知道,一个服务的发布和调用,也是很简单的。当然在整个过程中,还遇到过多次的失败, 虽然不是很难的程序,但是如果其中某一步没有按照正确的顺序来执行,会很容易出错的。以下就来说说遇到的有一些问题:
    1.在发布服务的时候,未能成功的生成wsdl文件。分析原因主要有URL的端口没有设置好,或者服务端的程序编写有误。当服务开启后,也就是服务端程序成功执行后,再在浏览器的地址栏里输入url+?wsdl,会成功生成。
2.在解析命令窗口解析wsdl的时候,不会生成.java文件,或者生成的.java文件所在的包名和原先的服务程序的包名不一致,说明解析有误,需要重新解析。在输入命令的时候,wsimport –s . 127.0.0.1:54321?wsdl中间的空格不能少。
虽然这次的实验实现的功能比较简单,但是它却涵盖了一个完整的webservice的发布和调用的全过程,有了这次的实践。那么以后再做比较复杂的服务的时候也就不用担心没有头绪了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。