由于之前关于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
转载请注明出处!谢谢!
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程