最近工作中用到了WebService,其发布方式有好多种,暂不讨论;
因为要业务联调,所以要模拟客户端的调用,因此也就产生了下面的问题。在这里主要想说一下,客户端调用WebService的方式!
如果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[],如果我们如要返回的是服务端自定义的数据类型,怎么办,也有解决办法!
怎样的呢?
利用wsdl2java 工具,呵呵,这样会在你本地生成代理类,你就可以使用这些自定义数据类型了!
如果你想知道怎么使用,请google,对于此篇,只浅显的介绍俩种可行思路(当然了,如果你要是愿意,可以打成jar包[仅包含需要用到的自定义数据类型及接口]提供给客户端)!
就说这么多吧,如有不对的地方,还望大家指正!
来源:oschina
链接:https://my.oschina.net/u/1019687/blog/157681