wsimport简介
在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用webService提供的方法。该工具可以用于非Java的服务器,如用C#编写的WebService,通过wsimport则生成Java的客户端实现。
常用命令如下:
wsimport -keep -d D:\temp\d -s D:\temp\s -p com.map -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
-keep:是否生成java源文件
-d:指定.class文件的输出目录
-s:指定.java文件的输出目录
-p:定义生成类的包名,不定义的话有默认包名
-verbose:在控制台显示输出信息
-b:指定jaxws/jaxb绑定文件或额外的schemas
-extension:使用扩展来支持SOAP1.2
wsimport实例
在此,推荐一个网站,提供了全面的WebService接口供参考:http://www.webxml.com.cn/zh_cn/web_services.aspx
在本地生成查询号码归属地的webService
(1) 进入网站找到
其中,.asmx网址说明了调用的方法、输入参数、返回数据,.wsdl是我们要用来生成代码的网址。
(2) 新建一个Java Project,工程创建好后,生成src目录
(3) cmd命令,进入jdk的bin目录下运行命令:
wsimport -keep -s D:\Workspaces -p com.cn.phone -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
-s后的路径如果不是工程的src目录,需把生成的包拷贝到src目录下
刷新项目,便会看到我们生成的文件了
当我们点击几个java文件看时,是不是发现中文注释乱码了,如果想把源代码的编码变成UTF-8,可以下载一个工具:UTFCastExpress
http://download.csdn.net/detail/aqsunkai/9535166
(4) 在该路径下写测试类:
package com.cn.phone; public class PhoneWsClient { public static void main(String[] args){ //创建一个MobileCodeWS工厂 MobileCodeWS factory = new MobileCodeWS(); //根据工厂创建一个MobileCodeWSSoap对象 MobileCodeWSSoap mobileCodeWSSoap = factory.getMobileCodeWSSoap(); //调用WebService提供的getMobileCodeInfo方法查询手机号码的归属地 String searchResult = mobileCodeWSSoap.getMobileCodeInfo("18512155752", null); System.out.println(searchResult); } }
运行main方法后:
在本地生成查询天气预报的webService
wsimport -keep -s D:\Workspaces -p com.cn.weather -verbose C:\Users\sun\Desktop\WeatherWS.xml
(4) 把生成的包拷贝到src目录下
package com.cn.weather; import java.util.List; public class WeatherWsClient { public static void main(String[] args) { //创建一个WeatherWS工厂 WeatherWS factory = new WeatherWS(); //根据工厂创建一个WeatherWSSoap对象 WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap(); //调用WebService提供的getWeather方法获取南宁市的天气预报情况 ArrayOfString weatherInfo = weatherWSSoap.getWeather("钓鱼岛", null); ListlstWeatherInfo = weatherInfo.getString(); //遍历天气预报信息 for (String string : lstWeatherInfo) { System.out.println(string); System.out.println("------------------------"); } //获得中国省份、直辖市、地区和与之对应的ID ArrayOfString s = weatherWSSoap.getRegionProvince(); List list = s.getString(); for (String string : list) { System.out.println(string); System.out.println("------------------------"); } } }