package com.hgwebservice.util; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.soap.*; import java.io.StringReader; import java.io.ByteArrayOutputStream; import java.io.StringReader; import java.text.SimpleDateFormat; import java.util.Date; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.soap.MessageFactory; import javax.xml.soap.MimeHeaders; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement; import javax.xml.soap.SOAPConnection; import javax.xml.soap.SOAPConnectionFactory; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; public class SoapUtil { private static final Logger log = LoggerFactory.getLogger(SoapUtil.class); private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyyMMddHHmmss"); public SoapUtil() { } public static Document generatorWebserviceBySoap(String soapPrefix, String endPointURL, String action, String cdata) throws Exception { log.info("Soap util"); Document doc = null; SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapRequest = messageFactory.createMessage(); soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true"); SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope(); reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix()); reqEnvelope.addNamespaceDeclaration("soap", "http://www.w3.org/2003/05/soap-envelope"); reqEnvelope.addNamespaceDeclaration("urn", "urn:hl7-org:v3"); reqEnvelope.setPrefix(soapPrefix); SOAPHeader reqHeader = soapRequest.getSOAPHeader(); reqHeader.setPrefix(soapPrefix); SOAPBody reqBody = soapRequest.getSOAPBody(); reqBody.setPrefix(soapPrefix); SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName("HIPMessageServer")); reqBodyAccountVerity.setPrefix("urn"); reqBodyAccountVerity.addChildElement("action").addTextNode(action); reqBodyAccountVerity.addChildElement("message").addTextNode(cdata); soapRequest.saveChanges(); ByteArrayOutputStream outReq = new ByteArrayOutputStream(); ByteArrayOutputStream outRes = new ByteArrayOutputStream(); soapRequest.writeTo(outReq); // log.info("SOAP Request:"); // log.info(outReq.toString()); SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL); soapResponse.writeTo(outRes); soapConnection.close(); // log.info("SOAP Response:"); // log.info(outRes.toString()); return ConstantUtil.convertStringToDocument(outRes.toString()); } public static String getToken() throws Exception { Document document = generatorWebserviceBySoap("soap", "http://192.168.5.247:9280/cdxtHIP-service/webservices/IHIPMessageService", "XT00004", buildRequestXml()); NodeList nodeList = document.getElementsByTagName("return"); Element item = (Element)nodeList.item(0); String temValue = item.getFirstChild().getNodeValue(); Document parse = ConstantUtil.convertStringToDocument(temValue); return parse != null ? parse.getElementsByTagName("accessToken").item(0).getFirstChild().getNodeValue() : null; } public static String buildRequestXml() { StringBuilder sb = new StringBuilder(); sb.append(" "); sb.append(" "); sb.append(""); sb.append(""); sb.append("\t"); sb.append(""); sb.append(""); sb.append("BIONIME"); sb.append(""); sb.append(""); sb.append("123456"); sb.append(""); sb.append(""); sb.append("630000000422"); sb.append(""); sb.append(""); sb.append("]]>"); return sb.toString(); } public static Document GeneratorWebserviceBySoap(String soapPrefix, String endPointURL, String namespace, String methodName, String soapActionURI, String[] inputNames, String[] inputValues, String tagName) throws Exception { log.info("Use mawei soap util"); Document doc = null; SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol"); SOAPMessage soapRequest = messageFactory.createMessage(); soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true"); MimeHeaders reqHeaders = soapRequest.getMimeHeaders(); reqHeaders.addHeader("SOAPAction", soapActionURI); SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope(); reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix()); reqEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance"); reqEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema"); reqEnvelope.addNamespaceDeclaration(soapPrefix, "http://www.w3.org/2003/05/soap-envelope"); reqEnvelope.setPrefix(soapPrefix); SOAPHeader reqHeader = soapRequest.getSOAPHeader(); reqHeader.setPrefix(soapPrefix); SOAPBody reqBody = soapRequest.getSOAPBody(); reqBody.setPrefix(soapPrefix); SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName(namespace, methodName)); reqBodyAccountVerity.addChildElement(inputNames[0]).addTextNode(inputValues[0]); reqBodyAccountVerity.addChildElement(inputNames[1]).addTextNode(inputValues[1]); soapRequest.saveChanges(); if (soapRequest != null) { ByteArrayOutputStream out_req = new ByteArrayOutputStream(); ByteArrayOutputStream out_res = new ByteArrayOutputStream(); soapRequest.writeTo(out_req); // log.info("SOAP Request:"); // log.info(new String(out_req.toByteArray())); SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL); soapResponse.writeTo(out_res); soapConnection.close(); // log.info("SOAP Response:"); // log.info(new String(out_res.toByteArray())); SOAPBody resBody = soapResponse.getSOAPBody(); String result = resBody.getElementsByTagName(tagName).item(0).getFirstChild().getNodeValue(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.parse(new InputSource(new StringReader(result))); } catch (Exception var26) { var26.printStackTrace(); } } return doc; } public static String GeneratorWebserviceBySoapResultUpload(String soapPrefix, String endPointURL, String namespace, String methodName, String soapActionURI, String[] inputNames, String[] inputValues, String tagName) throws Exception { log.info("Use mawei soap util"); SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol"); SOAPMessage soapRequest = messageFactory.createMessage(); soapRequest.setProperty("javax.xml.soap.write-xml-declaration", "true"); MimeHeaders reqHeaders = soapRequest.getMimeHeaders(); reqHeaders.addHeader("SOAPAction", soapActionURI); SOAPEnvelope reqEnvelope = soapRequest.getSOAPPart().getEnvelope(); reqEnvelope.removeNamespaceDeclaration(reqEnvelope.getPrefix()); reqEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance"); reqEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema"); reqEnvelope.addNamespaceDeclaration(soapPrefix, "http://www.w3.org/2003/05/soap-envelope"); reqEnvelope.setPrefix(soapPrefix); SOAPHeader reqHeader = soapRequest.getSOAPHeader(); reqHeader.setPrefix(soapPrefix); SOAPBody reqBody = soapRequest.getSOAPBody(); reqBody.setPrefix(soapPrefix); SOAPBodyElement reqBodyAccountVerity = reqBody.addBodyElement(new QName(namespace, methodName)); reqBodyAccountVerity.addChildElement(inputNames[0]).addTextNode(inputValues[0]); reqBodyAccountVerity.addChildElement(inputNames[1]).addTextNode(inputValues[1]); soapRequest.saveChanges(); String result = null; if (soapRequest != null) { ByteArrayOutputStream out_req = new ByteArrayOutputStream(); ByteArrayOutputStream out_res = new ByteArrayOutputStream(); soapRequest.writeTo(out_req); // log.info("SOAP Request:"); // log.info(new String(out_req.toByteArray())); SOAPMessage soapResponse = soapConnection.call(soapRequest, endPointURL); soapResponse.writeTo(out_res); soapConnection.close(); // log.info("SOAP Response:"); // log.info(new String(out_res.toByteArray())); SOAPBody resBody = soapResponse.getSOAPBody(); result = resBody.getElementsByTagName(tagName).item(0).getFirstChild().getNodeValue(); } return result; } }