import javax.xml.soap.*;
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPEnvelope envelope = soapMessage.getSOAPPart().getEnvelope();
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();
SOAPHeaderElement headerElement = header.addHeaderElement(envelope.createName("HeaderElement", "ns1", "http://example.com"));
headerElement.addTextNode("Header value");
SOAPBodyElement bodyElement = body.addBodyElement(envelope.createName("BodyElement", "ns1", "http://example.com"));
bodyElement.addTextNode("Body value");
SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = connectionFactory.createConnection();
SOAPMessage response = connection.call(soapMessage, endpoint);
SOAPEnvelope responseEnvelope = response.getSOAPPart().getEnvelope();
SOAPHeader responseHeader = responseEnvelope.getHeader();
SOAPBody responseBody = responseEnvelope.getBody();
Iterator<?> headerElements = responseHeader.getChildElements();
Iterator<?> bodyElements = responseBody.getChildElements();
while (headerElements.hasNext()) {
SOAPHeaderElement headerElement = (SOAPHeaderElement) headerElements.next();
String headerValue = headerElement.getTextContent();
}
while (bodyElements.hasNext()) {
SOAPBodyElement bodyElement = (SOAPBodyElement) bodyElements.next();
String bodyValue = bodyElement.getTextContent();
}