Web Service实例——天气预报


   上述只是模拟了一下服务端和本地端的通信,但是却没有涉及到真正获取其他网站信息的操作。现在我们通过一个案例,是关于获取天气预报,来实际掌握该项技能。


   原本可以使用MyEclipse自动生成客户端,然后很简单的进行调用就可以了,不过,在建立的过程中,却出现了如下图所示的问题:

2.3.1构建web Service client

 

   是因为MyEclipse无法解析标签,这个是什么原因,我们可以看一下服务商提供的WSDL的文档,很容易发现:


   xmlns:s=http://www.w3.org/2001/XMLSchema


   这句话正是MyEclipse无法解析的,因为这个原因,我们只能通过命令行建立,并且在构建的过程中还得绑定这个xsd文件。


   其实这个文件是jdk1.4的内容,java已经摒弃没有再使用了,也就造成了其无法通过验证的原因。



   我们现在MyEclipse中构建一个java项目(因为我们只是为了测试,并不一定需要Web工程):

 

2.3.2构建java项目

2.3.3添加JAX-WS支持



   之后,打开该项目,进入src目录,通过cmd构建命令:


 wsimport   -p   com.test.client


 -keep   http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL 


 -b   http://www.w3.org/2001/XMLSchema.xsd


 

 注意:必须一次性写完。

 

 

 -ppackage


 -keepwsdl文档的url


 -b:缺少的schema文件

2.3.4进入项目的目录src

 

2.3.5解析wsdl文档

 

2.3.6解析出现警告完成编译


注释:解析出现警告,这是正常的情况,不过我们已经将缺失的添加了,所以不必在这方面纠结了。而看一下我们的项目,refresh一下MyEclipse中的项目:

 

2.3.7文件结构


我们可以看到,它自动创建了com.test.client包,在包内,有一系列自动生成的java类。至此,我们的客户端已经创建完毕。


 

现在我们添加一个测试类:WebWeatherClient


 

package com.test.client;

public class WebWeatherClient {
	public static void main(String []args){
		WeatherWebService service = new WeatherWebService();
		WeatherWebServiceSoap soap = service.getWeatherWebServiceSoap();
		System.out.println(soap.getWeatherbyCityName("杭州").getString());
	}
}

代码段2.3.1测试类。

 

现在让我们运行一下:

 

 

可以看到我们已经拿到杭州这个城市的天气信息了。



原文地址:https://www.cnblogs.com/dyllove98/p/3230733.html