CXF远程调用webservice接口

2018年12月19日 14:08 | 2685次浏览 作者原创 版权保护

由于之前关于webservice的服务端和客户端的调用一直用axis2,所以在前几天第三方厂商说webservice接口已经写好,让其联合调试,接口只有两个,本人认为最多撑死一上午时间就能调试完毕,谁知道最后结果打脸了,打脸的地方在于用axis2远程调用webservice接口一直报错,报错如下:

org.apache.axis2.AxisFault: Unmarshalling Error: unexpected element (uri:"", local:"arg0"). Expected elements are <{}param0>

上网搜了很多,一直以为是服务端的问题,所以把网上建议的方法都测试了一遍,还是不行,此时已经一上午过去了,因为axis2调用远程webservice接口是一个公共方法,且生产环境上调用第三方厂商都没任何问题,导致在服务器端配合人员也很不耐烦,自己思考了一番,顺便问了下对方人员服务端用的什么框架做的,说是用的CXF框架,索性死马当活马医,把axis2远程调用webservice接口更换成cxf调用webservice,没想到,成功了,方法如下:

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;


JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();  
Client client = clientFactory.createClient("http://xxx.com/services/getKPI?wsdl");  
Object[] result = client.invoke("方法名", "参数值");  
	System.out.println(result[0]);

此方法为动态调用,只要指定服务器端wsdl文件的位置,然后指定要调用的方法和方法的参数即可,不关心服务端的实现方式。



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1937.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程