use of com.sun.xml.messaging.saaj.soap.SOAPPartImpl in project tdi-studio-se by Talend.
the class SOAPUtil method extractContentAsDocument.
/**
* invoke soap and return the response document
*/
public String extractContentAsDocument(String version, String destination, String soapAction, String soapMessage) throws SOAPException, TransformerException, ParserConfigurationException, FileNotFoundException, UnsupportedEncodingException {
MessageFactory messageFactory = null;
if (version.equals(SOAP12)) {
messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
} else {
messageFactory = MessageFactory.newInstance();
}
SOAPMessage message = messageFactory.createMessage();
MimeHeaders mimeHeaders = message.getMimeHeaders();
mimeHeaders.setHeader("SOAPAction", soapAction);
SOAPPart soapPart = message.getSOAPPart();
String encoding = getEncoding(soapMessage);
ByteArrayInputStream stream = new ByteArrayInputStream(soapMessage.getBytes(encoding));
StreamSource preppedMsgSrc = new StreamSource(stream);
soapPart.setContent(preppedMsgSrc);
message.saveChanges();
SOAPMessage reply = connection.call(message, destination);
SOAPPart reSoapPart = reply.getSOAPPart();
if (reSoapPart != null && reSoapPart instanceof SOAPPartImpl) {
((SOAPPartImpl) reSoapPart).setSourceCharsetEncoding(encoding);
}
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
t.transform(reSoapPart.getContent(), new StreamResult(bos));
return bos.toString(encoding);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
use of com.sun.xml.messaging.saaj.soap.SOAPPartImpl in project tdi-studio-se by Talend.
the class SOAPUtil method invokeSOAP.
public void invokeSOAP(String version, String destination, String soapAction, String soapMessage) throws SOAPException, TransformerException, ParserConfigurationException, FileNotFoundException, UnsupportedEncodingException {
MessageFactory messageFactory = null;
if (version.equals(SOAP12)) {
messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
} else {
messageFactory = MessageFactory.newInstance();
}
SOAPMessage message = messageFactory.createMessage();
MimeHeaders mimeHeaders = message.getMimeHeaders();
mimeHeaders.setHeader("SOAPAction", soapAction);
if (basicAuth) {
addBasicAuthHeader(mimeHeaders, username, password);
}
// Create objects for the message parts
SOAPPart soapPart = message.getSOAPPart();
String encoding = getEncoding(soapMessage);
ByteArrayInputStream stream = new ByteArrayInputStream(soapMessage.getBytes(encoding));
StreamSource preppedMsgSrc = new StreamSource(stream);
soapPart.setContent(preppedMsgSrc);
// InputStream stream = new FileInputStream(new File("d://soap.txt"));
// StreamSource preppedMsgSrc = new StreamSource(stream);
// soapPart.setContent(preppedMsgSrc);
message.saveChanges();
// Send the message
SOAPMessage reply = connection.call(message, destination);
SOAPPart reSoapPart = reply.getSOAPPart();
if (reSoapPart != null && reSoapPart instanceof SOAPPartImpl) {
((SOAPPartImpl) reSoapPart).setSourceCharsetEncoding(encoding);
}
SOAPEnvelope reEnvelope = reSoapPart.getEnvelope();
SOAPHeader reHeader = reEnvelope.getHeader();
if (reHeader != null) {
setReHeaderMessage(Doc2StringWithoutDeclare(extractContentAsDocument(reHeader)));
}
SOAPBody reBody = reEnvelope.getBody();
if (reBody.getFault() != null) {
hasFault = true;
setReFaultMessage(Doc2StringWithoutDeclare(extractContentAsDocument(reBody)));
setReBodyMessage(null);
} else {
hasFault = false;
if (reBody.getChildNodes().getLength() < 1) {
setReBodyMessage(null);
} else if (reBody.getChildNodes().getLength() == 1 && reBody.getChildNodes().item(0) instanceof javax.xml.soap.Text) {
setReBodyMessage(null);
} else {
setReBodyMessage(Doc2StringWithoutDeclare(extractContentAsDocument(reBody)));
}
setReFaultMessage(null);
}
}
Aggregations