【webservice】使用命令wsimport构建WebService客户端
wsimport命令介绍
在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。对于命令的使用方法,我们以开放的中文简体字与繁体字转换Web Service接口为例,如下:
在命令提示符中使用如下命令:
wsimport -keep -p com.zhj2f.client http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
命令参数说明(这里直接介绍比较常用的):
| -d:生成客户端执行类的class文件的存放目录
| -s:生成客户端执行类的源文件的存放目录
| -p:定义生成类的包名
使用wsimport命令后,我们可以得到相应的代码文件,将其拷贝到你的项目中,即可使用,目录树结构如下所示:
测试:新建工程,并将com.zhj2f.client包拷到工程文件下,编写测试文件test.java,代码如下:
package test; import com.zhj2f.client.TraditionalSimplifiedWebService; import com.zhj2f.client.TraditionalSimplifiedWebServiceSoap; public class test { public static void main(String args[]){ TraditionalSimplifiedWebService tsws = new TraditionalSimplifiedWebService(); TraditionalSimplifiedWebServiceSoap tss = tsws.getTraditionalSimplifiedWebServiceSoap(); String res = tss.toTraditionalChinese("我是谁"); System.out.println(res); } }
当然我们还可以使用上面同样的方法调用天气预报提供的开放webservice接口,只是天气预报的那个接口有点不同。如果我们直接使用wsimport 通过wsdl地址生存java 文件时,会报错。因为该wsdl里面包含 ref = "s:schema" 这样的引用。而jaxb是不支持的。所以手动将该wsdl下载(也就是网页另存为)下来做下修改,然后再生成java文件。
修改方法为:将所有的<s:element ref="s:schema"/> 改成 <s:any minOccurs="2" maxOccurs="2"/>,并且删除<s:any/>。
然后再通过wsimport生成java文件,就可以正常使用了。
参考资料:
[1] http://www.cnblogs.com/simle/archive/2011/11/03/2233417.html
[2] http://blog.csdn.net/lun379292733/article/details/18035915
[3] 常用Web Service汇总