1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > [报错]CXF动态客户端报错:No operation was found with the name

[报错]CXF动态客户端报错:No operation was found with the name

时间:2020-09-10 17:02:23

相关推荐

[报错]CXF动态客户端报错:No operation was found with the name

一般调用webSevice:

String service = "reqFun";

String url ="http://123.456.11.22/ceshi/api?wsdl";

String param = "canshu";

public static CallWsResult calWebService(String service,String url,String param) {if (StringUtils.isEmpty(param)) {return null;}CallWsResult callWsResult = new CallWsResult();try {JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient(url);/* HTTPConduit conduit = (HTTPConduit) client.getConduit();HTTPClientPolicy policy = new HTTPClientPolicy();long timeout = 10 * 1000;policy.setConnectionTimeout(timeout);policy.setReceiveTimeout(timeout);conduit.setClient(policy);*/LoggerUtil.info(CallWsResult.class,"----------------------开始"+service+"接口调用--------------------");Object[] objects = client.invoke(service, param);String result = objects[0].toString();LoggerUtil.info(CallWsClientUtils.class,service+"接口返回结果====>"+ result);callWsResult.setCallResult(result);;} catch (Exception e) {LoggerUtil.error(CallWsClientUtils.class, service+"接口调用失败" + e.getMessage());}return callWsResult;}

调用后发现接口报错:

百度报错原因:

使用下面这个方法就可以修复报错:

public static ScanPayWsResult scanPayWebService(String service, String url, String param) {if (StringUtils.isEmpty(param)) {return null;}ScanPayWsResult scanPayWsResult = new ScanPayWsResult();try {JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient(url);LoggerUtil.info(ScanPayWsResult.class,"----------------------开始"+service+"接口调用--------------------");// 下面一段处理 WebService接口和实现类namespace不同的情况// CXF动态客户端在处理此问题时,会报No operation was found with the name的异常Endpoint endpoint = client.getEndpoint();QName opName = new QName(endpoint.getService().getName().getNamespaceURI(), "reqFun");BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding();if (bindingInfo.getOperation(opName) == null) {for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) {if ("reqFun".equals(operationInfo.getName().getLocalPart())) {opName = operationInfo.getName();break;}}}Object[] objects = client.invoke(opName, param);String resultRes = objects[0].toString();String replaceAll = resultRes.replaceAll("&", "&");JSONObject jsonObject = XML.toJSONObject(replaceAll);ScanPayWsResult result = JSON.parseObject(JSON.toJSONString(jsonObject.get("request")), ScanPayWsResult.class);LoggerUtil.info(CallWsClientUtils.class,service+"接口返回结果====>"+ result);return result;} catch (Exception e) {LoggerUtil.error(CallWsClientUtils.class, service+"接口调用失败" + e.getMessage());}return scanPayWsResult;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。