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

这篇博客介绍了如何使用Java调用WebService接口,并详细展示了设置参数、发送请求以及解析返回的XML参数的过程。通过示例代码,演示了如何将返回的XML数据转换为List>,便于进一步处理。
摘要由CSDN通过智能技术生成

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;
    }
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值