package com.fr.data; import cn.hutool.core.lang.Console; import cn.hutool.http.webservice.SoapClient; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import com.fr.log.FineLoggerFactory; import com.fr.stable.ParameterProvider; import org.apache.avro.generic.GenericData; import javax.xml.soap.*; import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class OaFLow extends SimpleTableData { /** * 定义程序数据集的列名与数据保存位置 */ public static String ret = ""; @Override public String[] initColumnNames() { String[] columnNames = {"ZSN_ZHJD_OPINION", "ZSN_ZHJD_CREATEDATE", "ZSN_ZHJD_STATUS", "ZSN_ZHJD_NODE", "ZSN_ZHJD_DEPARTMENT", "ZSN_ZHJD_USERNAME"}; return columnNames; } /** * 实现构建函数,在构建函数中准备数据 */ @Override public List<Object[]> loadData() { String[] columnNames; Object[][] rowData; String flowId = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString(); List<Object[]> list = new ArrayList<>(); try { // 新建客户端 SoapClient client = SoapClient.create("http://IP/services/ConfirmFlowService") // 设置要请求的方法,此接口方法前缀为web,传入对应的命名空间 .setMethod("con:ConfirmFlowService", "http://schemas.xmlsoap.org/soap/envelope/") // 设置参数,此处自动添加方法的前缀:web .setParam("in0", flowId); // 发送请求,参数true表示返回一个格式化后的XML内容 // 返回内容为XML字符串,可以配合XmlUtil解析这个响应 SOAPMessage msg = formatSoapString(client.sendForResponse().body()); SOAPBody body = msg.getSOAPBody(); Iterator<SOAPElement> iterator = body.getChildElements(); PrintBody(iterator, null); JSONArray arr = JSONUtil.parseArray(JSONUtil.parse(JSONUtil.parse(ret).getByPath("confirmFlow")).getByPath(flowId)); for(int i=0;i<arr.size();i++){ list.add(new Object[6]); list.get(i)[0] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_OPINION"); list.get(i)[1] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_CREATEDATE"); list.get(i)[2] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_STATUS"); list.get(i)[3] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_NODE"); list.get(i)[4] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_DEPARTMENT"); list.get(i)[5] = JSONUtil.parseObj(arr.get(i)).get("ZSN_ZHJD_USERNAME"); } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } return list; } //实现ArrayTableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法 /** * 把soap字符串格式化为SOAPMessage * * @param soapString * @return * @see [类、类#方法、类#成员] */ public static SOAPMessage formatSoapString(String soapString) { MessageFactory msgFactory; try { msgFactory = MessageFactory.newInstance(); SOAPMessage reqMsg = msgFactory.createMessage(new MimeHeaders(), new ByteArrayInputStream(soapString.getBytes("UTF-8"))); reqMsg.saveChanges(); return reqMsg; } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); return null; } } private static void PrintBody(Iterator<SOAPElement> iterator, String side) { while (iterator.hasNext()) { Object o=iterator.next(); if(o!=null) { SOAPElement element=null; try{ element = (SOAPElement) o; System.out.println("Node Name:" + element.getNodeName()); System.out.println("Value:" + element.getValue()); if(element.getNodeName().equals("ns1:out")){ ret = element.getValue() + ""; } }catch(Exception e){} if ( element !=null ) { PrintBody(element.getChildElements(), side + "-----"); } } } } public static void main(String[] args){ new OaFLow().loadData(); } }
原文地址:http://www.cnblogs.com/shuaihan/p/16918091.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性