作者:管理员 历史版本:1 最后编辑:龚清 更新时间:2024-11-20 15:41
ibps平台封装的方式调用
封装类说明
# DefaultInvokeCmd
private String address; /* 调用地址 */
private String username; /* 服务的用户名 */
private String password; /* 服务的用户密码 */
private String operatorName; /* 操作方法名 */
private String operatorNamespace; /* 操作的名称空间 */
private String jsonParam; /* 操作的调用参数 */
private String type = "webservice"; /* 调用的服务类型 */
private String returnType = "object"; /* 服务返回类型void/object/list */
private Boolean soapAction = false; /* 构建xml时xmlns的配置方式 */
调用方式说明
DefaultInvokeCmd defaultInvokeCmd = new DefaultInvokeCmd();
defaultInvokeCmd.setAddress("http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl");
defaultInvokeCmd.setOperatorNamespace("http://WebXml.com.cn/");
defaultInvokeCmd.setOperatorName("getWeatherbyCityName");
defaultInvokeCmd.setSoapAction(true);
Map<String, Object> params = new HashMap<>();
params.put("theCityName", "广州");
defaultInvokeCmd.setJsonParam(JacksonUtil.toJsonString(params));
WebServiceClient webServiceClient = AppUtil.getBean(WebServiceClient.class);
InvokeResult invoke = webServiceClient.invoke(defaultInvokeCmd);
System.out.println(invoke.getObject());
System.out.println(invoke.getJson());
System.out.println(invoke.getList());
System.out.println(invoke.getXml());
apache.cxf方式调用
# ibps—starter-parent.xml中已经有cxf相关依赖,具体可看该文件
// 创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
//对方的wsdl地址
Client client = dcf.createClient("http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl");
Object[] objects= client.invoke("getCharFonts", Integer.valueOf(code)); //参数1,参数2,参数3......按顺序放就看可以
String json = JacksonUtil.toJsonString(objects[0]);
System.out.println("返回数据:" + json.toString());
有可能遇到无法解析报如下错误:
undefined element declaration ‘s:schema’ at line 44 column 19 of schema
错误原因是,因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题
具体解决办法参考:WebService学习总结(四)——调用第三方提供的webService服务 - 孤傲苍狼 - 博客园 (cnblogs.com)