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;
    }

总结

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

相关文章

  • Javassist如何操作Java 字节码

    Javassist如何操作Java 字节码

    这篇文章主要介绍了Javassist如何操作Java 字节码,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • Myeclipse链接Oracle等数据库时lo exception: The Network Adapter could not establish the connection

    Myeclipse链接Oracle等数据库时lo exception: The Network Adapter coul

    今天小编就为大家分享一篇关于Myeclipse链接Oracle等数据库时lo exception: The Network Adapter could not establish the connection,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 深入了解Java中的static关键字

    深入了解Java中的static关键字

    这篇文章主要为大家详细介绍了Java中的static关键字的用法的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以学习一下
    2022-11-11
  • SpringBoot如何打包自定义生成的包名

    SpringBoot如何打包自定义生成的包名

    这篇文章主要介绍了SpringBoot如何打包自定义生成的包名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java中Jar包反编译解压和压缩操作方法

    Java中Jar包反编译解压和压缩操作方法

    JAR文件就是Java 档案文件Java Archive,它是 Java 的一种文档格式,这篇文章主要介绍了Java中Jar包反编译解压和压缩,需要的朋友可以参考下
    2023-09-09
  • Java利用字符流轻松处理文本数据

    Java利用字符流轻松处理文本数据

    在Java中,文本数据是经常处理的一种数据类型,而字符流就是用来处理文本数据的一种流,下面就为大家介绍一下Java字符流的基本概念、常用类和方法,以及如何使用字符流来读写文件吧
    2023-09-09
  • Java 通过手写分布式雪花SnowFlake生成ID方法详解

    Java 通过手写分布式雪花SnowFlake生成ID方法详解

    SnowFlake是twitter公司内部分布式项目采用的ID生成算法,开源后广受国内大厂的好评。由这种算法生成的ID,我们就叫做SnowFlakeID,下面我们来详细看看
    2022-04-04
  • SpringCloud Ribbon负载均衡原理

    SpringCloud Ribbon负载均衡原理

    这篇文章主要介绍了SpringCloud Ribbon负载均衡原理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的朋友可以参考一下
    2022-09-09
  • 通过Maven进行jedis连接redis的实现

    通过Maven进行jedis连接redis的实现

    这篇文章主要介绍了通过Maven进行jedis连接redis的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Java基础之教你怎么用代码一键生成POJO

    Java基础之教你怎么用代码一键生成POJO

    这篇文章主要介绍了Java基础之教你怎么用代码一键生成POJO,文中有非常详细的代码示例,对正在学习Java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论