利用wsdl2java生成本地WebService客户端
在网上可以找到wsdl地址;如天气预报,手机号码所属地,交通查询等
第一步:打开wsdl网页,右击鼠标--->网页保存为---->保存为.wsdl格式本地文件;
或直接复制以.wsdl格式保存在项目src中,然后在该文件上右键----->myeclipse--->选new web service client点击next----->路径选择wsdl URL
然后一直next,就会在指定项目下生成同下内容
第二步:CMD命令:wsdl2java -keep 文件所在路径\文件名wsdl,然后回车,以手机号码所属地为例,会自动生成一下类,把类复制到项目里即可
第三步:写测试类,代码如下
public static void main(String[] args) { MobileCodeWS factory = new MobileCodeWS(); MobileCodeWSSoap soap = factory.getMobileCodeWSSoap(); //手机号码的所属地和什么卡 String mobilecodeinfo = soap.getMobileCodeInfo("18140605273", null); System.out.println(mobilecodeinfo); //
List<String> list = data.getString();for(String str:list){System.out.println(str);}}ArrayOfString data = soap.getDatabaseInfo();
结果
第二种方式:利用wsimport调用接口
wsimport -s D:\MyEclipse\Workspaces\WebServiceDemo\src -p com.neil.WebService.Client -keepWeatherWS.xml
WeatherWS.xml为http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
其中:
-s参数值的是生成的文件放哪里,指定放在你的项目的src文件夹下。
-p参数是Java 的包名
-keep参数是返回xml文件的url的地址
如调用天气预报接口:
由于此天气预报的服务器端是用net开发的,Java调用net开发的webservice时会有些问题,可以用如下方法解决,现在我们来验证一下:
A.先将生成本地的wsdl文档,浏览器访问http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl将显示的内容复制保存到一个本地文件weather.wsdl即可;
B.将本本地文档weather.wsdl中的<s:element ref="s:schema"/><s:any /> 替换成<s:any minOccurs="2" maxOccurs="2"/>;