生成客户端调用方式
首先cmd中进入生成代码的项目文件夹下的src中
在cmd中输入:
wsimport -p cn.itcast.mobile -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
代码如图,不用管:
写客户端代码调用:
package cn.itcast.mobile.client;
import cn.itcast.mobile.MobileCodeWS;
import cn.itcast.mobile.MobileCodeWSSoap;
/**
* 公网手机号查询客户端
* @author wujinxing
*
*/
public class MobileClient {
public static void main(String[] args) {
//创建服务视图
MobileCodeWS mobileCodeWS = new MobileCodeWS();
//获取服务实现类
MobileCodeWSSoap mobileCodeWSSoap = mobileCodeWS.getPort(MobileCodeWSSoap.class);
//调用查询方法
String result = mobileCodeWSSoap.getMobileCodeInfo("138888888", "");
System.out.println(result);
}
}
结果:
天气查询:
操作如上,命令行为:
wsimport -p cn.itcast.weather -s . http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
发现有错,如下:
将该网页保存,打开查找s:schema搜索并删除如下:
注意不要删除
cmd命令重新输入如下:
wsimport -p cn.itcast.weather -s . file:///d:/WeatherWS.xml
后面的为之前的储存地址.
则项目代码生成,写客户端调用代码:
package cn.itcast.weather.client;
import java.util.List;
import cn.itcast.weather.ArrayOfString;
import cn.itcast.weather.WeatherWS;
import cn.itcast.weather.WeatherWSSoap;
/**
* 公网天气查询客户端
* @author wujinxing
*
*/
public class WeatherClient {
public static void main(String[] args) {
WeatherWS weatherWS = new WeatherWS();
WeatherWSSoap weatherWSSoap = weatherWS.getPort(WeatherWSSoap.class);
ArrayOfString weather = weatherWSSoap.getWeather("武汉", "");//自己封装的一维数组
List<String> list = weather.getString();//提供转为string数组的方法
for(String str : list){//循环输出数组
System.out.println(str);
}
}
}
结果展示:
缺点:该种方式使用简单,但一些关键的元素在代码生成时写死到生成代码中,不方便维护,所以仅用于测试。
Service编程调用方式
package cn.itcast.mobile.client;
import java.io.IOException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import cn.itcast.mobile.MobileCodeWSSoap;
/**
* Service编程实现客户端调用
* @author wujinxing
*
*/
public class ServiceClient {
public static void main(String[] args) throws IOException {
//创建WSDL的URL,注意不是服务地址
URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
//创建服务名称
//1.namespaceURI - 命名空间地址
//2.localPart - 服务视图名
QName qname = new QName("http://WebXml.com.cn/", "MobileCodeWS");
//创建服务视图
//1.namespaceURI - 命名空间地址
//2.localPart - 服务视图名
Service service = Service.create(url, qname);
//获取服务实现类
MobileCodeWSSoap mobileCodeWSSoap = service.getPort(MobileCodeWSSoap.class);
//调用方法
String result = mobileCodeWSSoap.getMobileCodeInfo("18888888888", "");
System.out.println(result);
}
}