作者:管理员  历史版本: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)