打开上文提到的网址,找到天气预报WEB服务,点进去以后会有一个“服务说明的”超链接。点进去以后看到的内容,大家都很熟悉了,就是我们需要的wsdl文档。
复制wsdl的地址,现在eclipse里面的Web Service浏览器内看下是否能访问
在WeatherWSSoap里面有个getWeather方法,body点add输入一个城市名字,就会得到相应城市的天气状况。
上篇,已经介绍了利用JDK中wsimport工具生成客户端代码,本篇就不再赘述。
新建一个web项目,生成客户端代码
好恐怖!竟然出现了错误,这是因为Service端是用.net写的。用java调的话会出现这种错误。解决的方法是需要改一下wsdl文档中的一段代码。
我们通过url的方式生成代码,显然没法修改wsdl文档,需要我们
把wsdl文档保存到本地
。进行修改后,再利用JDK使用路径的方式进行生成。
在我们的项目上右击new >>>new file 建一个weather.wsdl
再次打开我们查询到的wsdl文档的页面,
右击查看源文件
。全部复制,粘贴到我们建好了的weather.wsdl文件中保存。这时可能会报错,没有报错的话,
ctrl+f 查找<s:element ref="s:schema" /><s:any />?替换成?<s:any minOccurs="2" maxOccurs="2"/>
再次生成一下,这次把url改为本地路径,继续执行生成命令,这次有警告,先不要理它
刷新下我们的项目,会看到生成后客户端代码,写一个测试类,看看是否能获取到天气预报信息
package cn.com.webxml.test;
import java.util.List;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWS;
import cn.com.webxml.WeatherWSSoap;
public class WeatherWSTest {
/**
* @param args
*/
public static void main(String[] args) {
WeatherWS weatherWS = new WeatherWS();
WeatherWSSoap weatherWSSoap = weatherWS.getWeatherWSSoap();
ArrayOfString weather = weatherWSSoap.getWeather("天津",null);
List<String> list = weather.getString();
System.out.println(list);
}
}
这里,我们需要调用一个方法,这个方法可以通过wsdl中<wsdl:service name="WeatherWS">标签获取
运行mian方法,查看控制台,就会得到相应城市的天气情况