一 首先找到一个免费天气预报的WebService服务接口
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
二 查看其wsdl文档并保存到本地三 使用wsimport工具生成客户端代码 wsimport -keep 本地wsdl文档路径
发现生成代码的过程中出现错误,s:schema标签错误,经过网络查找问题,找到了解决方法。把全部的 <s:elementref="s:schema" /><s:any /> 替换 成 <s:anyminOccurs="2" maxOccurs="2"/> 即可。
代码如下:
生成的客户端代码
/WetherClient/src/cn/com/webxml/ArrayOfString.java
/WetherClient/src/cn/com/webxml/DataSet.java
/WetherClient/src/cn/com/webxml/GetSupportCity.java
/WetherClient/src/cn/com/webxml/GetSupportCityResponse.java
/WetherClient/src/cn/com/webxml/GetSupportDataSet.java
/WetherClient/src/cn/com/webxml/GetSupportDataSetResponse.java
/WetherClient/src/cn/com/webxml/GetSupportProvince.java
/WetherClient/src/cn/com/webxml/GetSupportProvinceResponse.java
/WetherClient/src/cn/com/webxml/GetWeatherbyCityName.java
/WetherClient/src/cn/com/webxml/GetWeatherbyCityNamePro.java
/WetherClient/src/cn/com/webxml/GetWeatherbyCityNameProResponse.java
/WetherClient/src/cn/com/webxml/GetWeatherbyCityNameResponse.java
/WetherClient/src/cn/com/webxml/ObjectFactory.java
/WetherClient/src/cn/com/webxml/package-info.java
/WetherClient/src/cn/com/webxml/WeatherWebService.java
/WetherClient/src/cn/com/webxml/WeatherWebServiceSoap.java
测试代码:
package com.cl.test; import java.awt.List; import cn.com.webxml.ArrayOfString; import cn.com.webxml.WeatherWebService; import cn.com.webxml.WeatherWebServiceSoap; public class WetherClientTest { public static void main(String[] args) { WeatherWebService factory=new WeatherWebService(); WeatherWebServiceSoap soap=factory.getWeatherWebServiceSoap(); ArrayOfString aos=soap.getWeatherbyCityName("北京"); java.util.List<String> list=aos.getString(); System.out.println(list); } }
注意:工厂在wsdl文档的<wsdl:service name="WeatherWebService">看出是这个类: WeatherWebService
服务接口也是在wsdl文档的<wsdl:port name="WeatherWebServiceSoap" binding="tns:WeatherWebServiceSoap">看出是这个服务接口:WeatherWebServiceSoap。