public static SOAPMessage createWSRequest(String ip, String soapMethod, String id, String idType) { //soap请求构建 String url = WEBSERVICE_URL; url = url.replace(IP_IDENTIFY, ip); try { SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = soapConnectionFactory.createConnection(); MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); SOAPPart soapPart = message.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.addNamespaceDeclaration("ns", "http://service.medc.com/"); SOAPBody body = envelope.getBody(); SOAPElement bodyElement = body.addChildElement(soapMethod, "ns"); //方法传参 bodyElement.addChildElement(idType).addTextNode(id); //响应获取 return connection.call(message, url); } catch (Exception e) { e.printStackTrace(); return null; } }
//返回xml数据 public static String transformToString(Source source) { StringWriter writer = new StringWriter(); try { Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.transform(source, new StreamResult(writer)); } catch (TransformerException e) { e.printStackTrace(); } return writer.toString(); }
public static int parseType(String xml, List list, String objType) { String elementResponseName = ""; //根据方法不同,定义解析的方法响应 if (objType.equals("order")) { elementResponseName = "getMedicalOrdersResponse"; objType = "order"; } else if (objType.equals("patient")) { elementResponseName = "getPatientInfoResponse"; objType = "patient"; }else if (objType.equals("nurse")) { elementResponseName = "getNurseNameResponse"; objType = "nurse"; } String code = String.valueOf(UNKNOWN_ERROR); try { if (null != xml) { Document document = DocumentHelper.parseText(xml); //获取根节点 Element root = document.getRootElement(); //获取根节点下的tag1标签 Element tag1 = root.element("Body"); code = tag1.element(elementResponseName).element("return").element("code").getText(); if (String.valueOf(SUCCESS).equals(code)) { String rs = tag1.element(elementResponseName).element("return") .element("data").getText(); if (objType.equals("order")) { list.add(JSON.parseObject(rs, AllDataDTO.DoctorOrderInfoDTO.class)); } else if (objType.equals("patient")) { list.add(JSON.parseObject(rs, AllDataDTO.PatientInfoDTO.class)); } else if (objType.equals("nurse")) { list.add(rs); } } } } catch (Exception e) { e.printStackTrace(); log.error("解析响应异常", e); } return Integer.parseInt(code); }