最近工做中用到了WebService,其发布方式有好多种,暂不讨论;java
由于要业务联调,因此要模拟客户端的调用,所以也就产生了下面的问题。在这里主要想说一下,客户端调用WebService的方式!web
若是WebService自己没有返回值返回值仅是基本数据类型时,我推荐你们阅读一下下面这篇博客,其中动态客户端调用很好用。设计模式
http://www.oschina.net/question/54100_26065工具
在这里我强调一下:wsdl地址和方法名称必定不要出错!学习
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); //这个是否是用到了工厂方法设计模式呢?学习中
String wsUrl = "http://localhost:8080/webservice_path/webservice_name?wsdl"; //wsdl地址
String method = "webservice_method";//webservice的方法名
Client client = dcf.createClient(wsUrl);
Object[] res = null;
try {
res = client.invoke(method);//调用webservice
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("res:"+res[0]);
System.exit(0);
你们能够看到,invoke()方法的返回值是Object[],若是咱们如要返回的是服务端自定义的数据类型,怎么办,也有解决办法!.net
怎样的呢?设计
利用wsdl2java 工具,呵呵,这样会在你本地生成代理类,你就能够使用这些自定义数据类型了!代理
若是你想知道怎么使用,请google,对于此篇,只浅显的介绍俩种可行思路(固然了,若是你要是愿意,能够打成jar包[仅包含须要用到的自定义数据类型及接口]提供给客户端)!接口
就说这么多吧,若有不对的地方,还望你们指正!