private Path writeToFile(Path parent) { Path path = parent.resolve(input.file); try { Source sc; if (xsdDefinition.isWsdl()) { SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); soapMessage.getSOAPBody().addDocument(document); soapMessage.getSOAPPart().getEnvelope().removeNamespaceDeclaration("SOAP-ENV"); soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("soap", "http://schemas.xmlsoap.org/soap/envelope/"); soapMessage.getSOAPPart().getEnvelope().setPrefix("soap"); soapMessage.getSOAPHeader().setPrefix("soap"); soapMessage.getSOAPBody().setPrefix("soap"); sc = soapMessage.getSOAPPart().getContent(); } else { sc = new DOMSource(document); } try (BufferedWriter writer = Files.newBufferedWriter(path)) { TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTransformer(); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); t.transform(sc, new StreamResult(writer)); } catch (Exception ex) { throw new RuntimeException("Error write XML ", ex); } } catch (Exception exx) { throw new RuntimeException(exx); } return path; }
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); SOAPMessage soapMessage = messageFactory.createMessage(); SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope soapEnvelope = soapPart.getEnvelope(); SOAPBody soapBody = soapEnvelope.getBody(); soapEnvelope.removeNamespaceDeclaration(soapEnvelope.getPrefix()); soapEnvelope.addNamespaceDeclaration("soap", "http://schemas.xmlsoap.org/soap/envelope/"); soapEnvelope.setPrefix("soap"); soapBody.setPrefix("soap"); soapEnvelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance"); soapEnvelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema"); soapMessage.getSOAPHeader().detachNode(); soapMessage.getMimeHeaders().setHeader("SOAPAction", "http://www.example.com/TransactionProcess");
private void alterSoapEnvelope(SaajSoapMessage soapResponse) { try { SOAPMessage soapMessage = soapResponse.getSaajMessage(); SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPHeader header = soapMessage.getSOAPHeader(); SOAPBody body = soapMessage.getSOAPBody(); SOAPFault fault = body.getFault(); envelope.removeNamespaceDeclaration(envelope.getPrefix()); envelope.addNamespaceDeclaration(PREFERRED_PREFIX, SOAP_ENV_NAMESPACE); envelope.setPrefix(PREFERRED_PREFIX); header.setPrefix(PREFERRED_PREFIX); body.setPrefix(PREFERRED_PREFIX); if (fault != null) { fault.setPrefix(PREFERRED_PREFIX); } } catch (SOAPException e) { e.printStackTrace(); } }