wsimport生成webservice客户端
在JDK的bin文件夹中,有一个wsimport.exe工具,可依据wsdl文件生成相应的类文件,将生存在本地这些类文件拷贝到需要使用的项目中,就可以像调用本地的类一样调用webService提供的方法。该工具可以用于非Java的服务器,如用C#编写的WebService,通过wsimport则生成Java的客户端实现。
配置jdk class_HOMe 和path后 可直接用;
找到目标项目 工作空间 的src下 , 如
cd d:\workspace\项目名\src
执行:wsimport -keep http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
直接使用wsimport 通过该地址生成Java文件时,会报错。
因为该wsdl里面包含 ref = "s:schema" 这样的引用。而jaxb是不支持的。所以需要手动将该wsdl下载下来 另存为wsdl文件,打开后修改:
将所有的<s:element ref="s:schema" /> <s:any />改成 <s:any minOccurs="2" maxOccurs="2"/>,一共有三处需要修改,建议查找<s:element ref="s:schema" />,
修改时把<s:any />也要删掉。
生成客户端代码 一定要注意 MobileCodeWS中 wsdllocation 要把 本地地址 修改为 http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
-----调用方法
public static void main(String[] args) {
//创建一个MobileCodeWS工厂
MobileCodeWS factory = new MobileCodeWS();
//根据工厂创建一个MobileCodeWSSoap对象
MobileCodeWSSoap mobileCodeWSSoap = factory.getMobileCodeWSSoap();
//调用WebService提供的getMobileCodeInfo方法查询手机号码的归属地
String searchResult = mobileCodeWSSoap.getMobileCodeInfo("15589954472", null);
System.out.println(searchResult);
}