AXIS2数据解析和封装
一、解析示例:
public Senddividendstrategy senddividendstrategy(OMElement in) { Senddividendstrategy svs = null; try { svs = EbsServiceImp.checkDataByOMElement(in); } catch (Exception e) { e.printStackTrace(); } return svs; } public static Senddividendstrategy checkDataByOMElement(OMElement element) throws AxisFault, Exception { Senddividendstrategy s = null; if (element != null) { Calendar cal = Calendar.getInstance(); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String mDateTime = formater.format(cal.getTime()); List<Senddividendstrategy> sList = new ArrayList<Senddividendstrategy>(); Senddividendstrategy svs = null; Iterator iteClient = element.getChildElements(); while (iteClient.hasNext()) { OMNode omNodeClient = (OMNode) iteClient.next(); if (omNodeClient.getType() == 1) { OMElement omeClient = (OMElement) omNodeClient; if (omeClient.getLocalName().toLowerCase().equals("sparams")) { Iterator iteTParam = omeClient.getChildElements(); while (iteTParam.hasNext()) { OMNode omNodeTParam = (OMNode) iteTParam.next(); if (omNodeTParam.getType() == 1) { OMElement omeTParam = (OMElement) omNodeTParam; if (omeTParam.getLocalName().toLowerCase().equals("sparam")) { svs = (Senddividendstrategy) BeanUtil.processObject(omeTParam, Senddividendstrategy.class, null, true, new DefaultObjectSupplier()); sList.add(svs); } } } } } } s = senddividendstrategyCal(sList); } return s; }
二、封装示例:
1、 /** * 测试 * @param statistic * @param userId * @return */ public static String sendDataDfzwByOMElement() { targetEPR = new EndpointReference("http://192.168.10.227/ebsService/services/ebsService?wsdl"); // 创建request SOAP包 OMFactory fac = OMAbstractFactory.getOMFactory(); // OMNamespace指定此SOAP文档名称空间 OMNamespace om = fac.createOMNamespace("http://service.eee.shun.com", "client"); // 创建元素,并指定其在om指代的名称空间中,元素名必须跟services.xml重大operation的name相同 OMElement method = fac.createOMElement("senddividendstrategy", om); OMElement root; OMElement svsListOmElement; List<Senddividendstrategy> svsList = new ArrayList<Senddividendstrategy>(); try { Senddividendstrategy s = new Senddividendstrategy(); for (int i = 0; i < 10 ; i++) { s.setDividend_date("1"); s.setCompany_code("2"); s.setEquity_note_number("3"); s.setDividend_line_number(Long.valueOf(4)); s.setAssign_type_code("5"); s.setAssign_source("6"); s.setSegment3("7"); s.setAmount(Long.valueOf(8)); s.setCash_amount(Long.valueOf(9)); s.setCash_proportion(Long.valueOf(10)); s.setCash_person_proportion(Long.valueOf(11)); s.setCapital_source("12"); s.setCapital_amount(Long.valueOf(13)); s.setCapital_proportion(Long.valueOf(14)); s.setCapital_person_proportion(Long.valueOf(15)); s.setEquity_category("16"); s.setEquity_properties("17"); s.setReduce_tax_amount(Long.valueOf(18)); s.setStart_date("19"); s.setManager_type("20"); s.setProcess_startus("21"); s.setData_status("22"); s.setX_msg_data("23"); s.setX_return_status("24"); svsList.add(s); } root = fac.createOMElement("root", null); svsListOmElement = BeanUtil.getOMElement(new QName("sparams"), svsList.toArray(), new QName("sparam"), false, null); root.addChild(svsListOmElement); method.addChild(root); Options options = new Options(); options.setTo(targetEPR); ServiceClient sender = new ServiceClient(); sender.setOptions(options); // 发出request SOAP // 同时将得到的远端由senddividendstrategy方法返回的信息保存到result // 通过services.xml能准确找到senddividendstrategy方法所在的文件 sender.sendReceive(method); String filePath = "E:\\ebs.xml"; writeToFile(filePath, method); } catch (Exception e) { e.printStackTrace(); } return null; } 2、 //创建response SOAP包 OMFactory fac = OMAbstractFactory.getOMFactory(); //OMNamespace指定此SOAP文档名称空间 OMNamespace omNs = fac.createOMNamespace("http://service.eee.shun.com", "service"); //创建元素SafetyTrouble返回给客服端的元素,并指定其在omNs指代的名称空间中 OMElement resp = fac.createOMElement("line-service", omNs); OMElement root = fac.createOMElement("root", null); ReturnOutParameter rop = new ReturnOutParameter(); List<ReturnOutParameter> ropList = new ArrayList<ReturnOutParameter>(); OMElement ropListOmElement; rop.setX_return_status(x_return_status); rop.setX_msg_data(x_msg_data); ropList.add(rop); //添加消息信息 ropListOmElement = BeanUtil.getOMElement(new QName("rparams"), ropList.toArray(), new QName("rparam"), false, null); root.addChild(ropListOmElement); resp.addChild(root); return resp;