java调用webservice接口,并解析返回参数问题

 更新时间:2024年07月02日 11:41:17   作者:weixin_47056195  
这篇文章主要介绍了java调用webservice接口,并解析返回参数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

java调用webservice接口,并解析返回参数

1. 设置传参

例如以下格式:

// 确定传参格式以及赋值
String reqXml = "<createAppParam>\n" +
                    "<serviceUserName>auth</serviceUserName>\n" +
                    "<servicePwd>auth</servicePwd>\n" +
                    "<rootTicket>"+rootTicket+"</rootTicket>\n" +
                    "<appAccount>"+userAccount+"</appAccount>\n" +
                    "<resNum>1000</resNum>\n" +
                    "<operationCode>"+operationCode+"</operationCode>\n" +
                    "<functionCode>668801</functionCode>\n" +
                    "<authMode>"+mode+"</authMode>\n" +
                    "<applyReason>"+sendApplyParam.getCerReason()+"</applyReason>\n" +
                    "<userTimes>9999</userTimes>\n" +
                    "<duration>"+sendApplyParam.getExpire()+"</duration>\n" +
                    "<userIP>"+ip+"</userIP>\n" +
                    "<selectedApprover>"+sendApplyParam.getApproverId()+"</selectedApprover>\n" +
                    "<workOrderID>999999</workOrderID>\n" +
                    "<workOrderType>9999</workOrderType>\n" +
                    "</createAppParam>\n";

2. 调用对端接口

//方法调用   
//reqXml 传入的参数信息
//applyInfoUrl 对端接口的请求地址
//type 对端接口的方法名,如果只是调用一个方法名可以写死
String result = DocumentTrans.send(reqXml,applyInfoUrl,type);

调用实现代码

 //调用接口
    public static String send(String params,String url,String type) {
        log.info("===传递的参数==="+params);
        log.info("===请求路径==="+url);
        String result="";
        org.apache.axis.client.Service service = new org.apache.axis.client.Service();
        Call call = null;
        try {
            call = service.createCall();
        } catch (ServiceException e) {
            e.printStackTrace();
        }
        //10.174.242.24:7001
        call.setTargetEndpointAddress(url);
        //3、设置参数   in0(对端的方法中的参数名)
        call.addParameter("in0",
                org.apache.axis.encoding.XMLType.XSD_STRING, //参数类型
                javax.xml.rpc.ParameterMode.IN);// 接口的参数
        // 设置返回类型
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        try {
            result = (String) call.invoke(QName.valueOf(type), new Object[]{params});
        } catch (Exception e) {
            e.printStackTrace();
            throw new NrmsYnException("接口异常");
        }
        return result;
    }

2.解析返回的参数

转为List<Map<String, String>>

  //2.1 先调用解析
    public static Document DocumentHelperreadStringXml(String xmlContent) {
        // DocumentHelper 解析xml字符串
        Document document = null;
        try {
            document = DocumentHelper.parseText(xmlContent);
        } catch (DocumentException e1) {
            e1.printStackTrace();
        }
        return document;
    }

    //2.2 转换 将解析出来的数据document 传入转换接口Documentanalysis1  
    public static List<Map<String, String>> Documentanalysis1(Document doc) {
        List<Map<String, String>> uploadList = new ArrayList<Map<String, String>>();
        Element html = doc.getRootElement();// 获取根结点
        List<Element> head = html.elements();
        Set<String> set = new HashSet<>();
        head.forEach(a -> {
            set.add(a.getName());
        });

        set.forEach(a -> {
            List<Element> elements = html.elements(a);// 获取子结点
            elements.forEach(b -> {
                Map<String, String> uploadMap = new HashMap<>();
                uploadMap.put(b.getName(), b.getText());
                uploadList.add(uploadMap);
            });
        });
        //返回List<Map<String, String>>
        return uploadList;
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解关于spring bean名称命名的那些事

    详解关于spring bean名称命名的那些事

    每个bean都有一个或者多个标识符,这些标识符在容器中必须是唯一的,这篇文章主要给大家介绍了关于spring bean名称命名的那些事,需要的朋友可以参考下
    2021-07-07
  • 学习C语言对后期java有帮助吗

    学习C语言对后期java有帮助吗

    在本篇文章里小编给大家整理的是一篇关于学习C语言对后期java有帮助吗的基础文章,有兴趣的朋友们可以参考下。
    2020-11-11
  • SpringBoot给所有接口配置跨域的方法详解

    SpringBoot给所有接口配置跨域的方法详解

    简单而言,跨域请求就是当一台服务器资源从另一台服务器(不同 的域名或者端口)请求一个资源或者接口,就会发起一个跨域 HTTP 请求,本文给大家介绍了SpringBoot给所有接口配置跨域的方法,需要的朋友可以参考下
    2025-09-09
  • CentOS 7.9服务器Java部署环境配置的过程详解

    CentOS 7.9服务器Java部署环境配置的过程详解

    这篇文章主要介绍了CentOS 7.9服务器Java部署环境配置,主要包括ftp服务器搭建过程、jdk安装方法以及mysql安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • java数据结构与算法数组模拟队列示例详解

    java数据结构与算法数组模拟队列示例详解

    这篇文章主要为大家介绍了java数据结构与算法数组模拟队列示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • java创建jar包并被项目引用步骤详解

    java创建jar包并被项目引用步骤详解

    这篇文章主要介绍了java创建jar包并被项目引用步骤详解,jar包实现了特定功能的,java字节码文件的压缩包,更多相关内容需要的朋友可以参考一下
    2022-07-07
  • Spring Boot 启动失败:循环依赖排查到懒加载配置的过程解析

    Spring Boot 启动失败:循环依赖排查到懒加载配置的过程解析

    本文我将从一个真实的生产环境故障案例出发,带你深入了解Spring Boot循环依赖的检测机制、排查方法和解决方案,通过系统性分析和实战演练帮助掌握如何在复杂的应用中处理循环依赖,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • 微服务搭建集成Spring Cloud Turbine详解

    微服务搭建集成Spring Cloud Turbine详解

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。下面我们来详细了解一下吧
    2019-06-06
  • Caffeine本地缓存核心原理与使用方法详解(含与Spring Cache集成)

    Caffeine本地缓存核心原理与使用方法详解(含与Spring Cache集成)

    本文介绍Caffeine作为高性能本地缓存库,具备智能淘汰策略和并发优化,集成SpringCache实现缓存管理,探讨缓存穿透、击穿、雪崩防护及多级缓存(Caffeine+Redis)方案,适用于Java生态的缓存实践,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • 在Mybatis中使用自定义缓存ehcache的方法

    在Mybatis中使用自定义缓存ehcache的方法

    这篇文章主要介绍了在Mybatis中使用自定义缓存ehcache的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论