当我们拿到一个接口的时候,先别急着去调用它,我们得先测试这个接口是否正确,是否能调用成功,以及返回的数据是否是我们需要的类型等等。这时候我们需要一个工具,比如SoapUI。(最好用绿色免安装版的。)然后去测试接口的可行性。

 

可行之后再带入咱们的代码里面。这里需要用到CXF插件,百度随处可下。下面是我调用webservice的代码,参数分别为接口地址,调用接口的方法名以及方法的参数。非常的简单。

 

public static Object[] invokeRemoteMethod(String url, String operation, Object[] parameters){
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
if (!url.endsWith("wsdl")) {
url += "?wsdl";
}
org.apache.cxf.endpoint.Client client = dcf.createClient(url);
//处理webService接口和实现类namespace不同的情况,CXF动态客户端在处理此问题时,会报No operation was found with the name的异常
Endpoint endpoint = client.getEndpoint();
QName opName = new QName(endpoint.getService().getName().getNamespaceURI(),operation);
BindingInfo bindingInfo= endpoint.getEndpointInfo().getBinding();
if(bindingInfo.getOperation(opName) == null){
for(BindingOperationInfo operationInfo : bindingInfo.getOperations()){
if(operation.equals(operationInfo.getName().getLocalPart())){
opName = operationInfo.getName();
break;
}
}
}
Object[] res = null;
try {
res = client.invoke(opName, parameters);
} catch (Exception e) {
e.printStackTrace();
}
return res;
}

 

ps:

对于一个懒人来说,很多东西不一定要懂,只需要会用则好。好比穷人手里的100块和富人手里的100块完全就是两个概念,懒人的100分精力就相当于穷人手里的100块,当然不能乱花。有人会说,你上网玩游戏逛街的时候精力怕是有1w!!我只能回答,精力需要对事对人。或许我们这种人的成就很低,甚至没有成就,一生庸庸碌碌~~~ 可能我的价值观比较低吧,觉得没所谓,日子能过就好,就好像牛排和猪肉,它们带给我的味觉冲击其实是差不多的,但是猪肉更便宜,我当然会选择猪肉!!

不爱展望未来,但喜珍惜当下~

 

posted on 2018-09-07 11:33  伊丽莎白260  阅读(9929)  评论(3编辑  收藏  举报