List of usage examples for javax.xml.soap SOAPEnvelope setEncodingStyle
public void setEncodingStyle(String encodingStyle) throws SOAPException;
From source file:com.cisco.dvbu.ps.common.adapters.connect.SoapHttpConnector.java
private Document send(SoapHttpConnectorCallback cb, String requestXml) throws AdapterException { log.debug("Entered send: " + cb.getName()); // set up the factories and create a SOAP factory SOAPConnection soapConnection; Document doc = null;//from w ww . j a v a 2 s .co m URL endpoint = null; try { soapConnection = SOAPConnectionFactory.newInstance().createConnection(); MessageFactory messageFactory = MessageFactory.newInstance(); // Create a message from the message factory. SOAPMessage soapMessage = messageFactory.createMessage(); // Set the SOAP Action here MimeHeaders headers = soapMessage.getMimeHeaders(); headers.addHeader("SOAPAction", cb.getAction()); // set credentials // String authorization = new sun.misc.BASE64Encoder().encode((shConfig.getUser() + "@" + shConfig.getDomain() + ":" + shConfig.getPassword()).getBytes()); String authorization = new String(org.apache.commons.codec.binary.Base64.encodeBase64( (shConfig.getUser() + "@" + shConfig.getDomain() + ":" + shConfig.getPassword()).getBytes())); headers.addHeader("Authorization", "Basic " + authorization); log.debug("Authentication: " + authorization); // create a SOAP part have populate the envelope SOAPPart soapPart = soapMessage.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.setEncodingStyle(SOAPConstants.URI_NS_SOAP_ENCODING); SOAPHeader head = envelope.getHeader(); if (head == null) head = envelope.addHeader(); // create a SOAP body SOAPBody body = envelope.getBody(); log.debug("Request XSL Style Sheet:\n" + XMLUtils.getPrettyXml(XMLUtils.getDocumentFromString(cb.getRequestBodyXsl()))); // convert request string to document and then transform body.addDocument(XmlUtils.xslTransform(XmlUtils.stringToDocument(requestXml), cb.getRequestBodyXsl())); // build the request structure soapMessage.saveChanges(); log.debug("Soap request successfully built: "); log.debug(" Body:\n" + XMLUtils.getPrettyXml(XMLUtils.getDocumentFromString(XmlUtils.nodeToString(body)))); if (shConfig.useProxy()) { System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost", shConfig.getProxyHost()); System.setProperty("http.proxyPort", "" + shConfig.getProxyPort()); if (shConfig.useProxyCredentials()) { System.setProperty("http.proxyUser", shConfig.getProxyUser()); System.setProperty("http.proxyPassword", shConfig.getProxyPassword()); } } endpoint = new URL(shConfig.getEndpoint(cb.getEndpoint())); // now make that call over the SOAP connection SOAPMessage reply = null; AdapterException ae = null; for (int i = 1; (i <= shConfig.getRetryAttempts() && reply == null); i++) { log.debug("Attempt " + i + ": sending request to endpoint: " + endpoint); try { reply = soapConnection.call(soapMessage, endpoint); log.debug("Attempt " + i + ": received response: " + reply); } catch (Exception e) { ae = new AdapterException(502, String.format(AdapterConstants.ADAPTER_EM_CONNECTION, endpoint), e); Thread.sleep(100); } } // close down the connection soapConnection.close(); if (reply == null) throw ae; SOAPFault fault = reply.getSOAPBody().getFault(); if (fault == null) { doc = reply.getSOAPBody().extractContentAsDocument(); } else { // Extracts the entire Soap Fault message coming back from CIS String faultString = XmlUtils.nodeToString(fault); throw new AdapterException(503, faultString, null); } } catch (AdapterException e) { throw e; } catch (Exception e) { throw new AdapterException(504, String.format(AdapterConstants.ADAPTER_EM_CONNECTION, shConfig.getEndpoint(cb.getEndpoint())), e); } finally { if (shConfig.useProxy()) { System.setProperty("http.proxySet", "false"); } } log.debug("Exiting send: " + cb.getName()); return doc; }
From source file:org.libreplan.importers.TimSoapClient.java
/** * Sets the encoding style to the specified parameter * <code>soapEnvelop</code>//from www . j a v a 2 s . com * * @param soapEnvelope * the SOAP envelope * @throws SOAPException */ private static void setEncodingStyle(SOAPEnvelope soapEnvelope) throws SOAPException { soapEnvelope.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/"); }
From source file:org.pentaho.platform.plugin.action.xmla.XMLABaseComponent.java
/** * Execute query/* w w w . jav a 2 s . c o m*/ * * @param query - MDX to be executed * @param catalog * @param handler Callback handler * @throws XMLAException */ public boolean executeQuery(final String query, final String catalog) throws XMLAException { Object[][] columnHeaders = null; Object[][] rowHeaders = null; Object[][] data = null; int columnCount = 0; int rowCount = 0; SOAPConnection connection = null; SOAPMessage reply = null; try { connection = scf.createConnection(); SOAPMessage msg = mf.createMessage(); MimeHeaders mh = msg.getMimeHeaders(); mh.setHeader("SOAPAction", XMLABaseComponent.EXECUTE_ACTION); //$NON-NLS-1$ SOAPPart soapPart = msg.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.setEncodingStyle(XMLABaseComponent.ENCODING_STYLE); SOAPBody body = envelope.getBody(); Name nEx = envelope.createName("Execute", "", XMLABaseComponent.XMLA_URI); //$NON-NLS-1$//$NON-NLS-2$ SOAPElement eEx = body.addChildElement(nEx); eEx.setEncodingStyle(XMLABaseComponent.ENCODING_STYLE); // add the parameters // COMMAND parameter // <Command> // <Statement>select [Measures].members on Columns from // Sales</Statement> // </Command> Name nCom = envelope.createName("Command", "", XMLABaseComponent.XMLA_URI); //$NON-NLS-1$ //$NON-NLS-2$ SOAPElement eCommand = eEx.addChildElement(nCom); Name nSta = envelope.createName("Statement", "", XMLABaseComponent.XMLA_URI); //$NON-NLS-1$ //$NON-NLS-2$ SOAPElement eStatement = eCommand.addChildElement(nSta); eStatement.addTextNode(query); // <Properties> // <PropertyList> // <DataSourceInfo>Provider=MSOLAP;Data // Source=local</DataSourceInfo> // <Catalog>Foodmart 2000</Catalog> // <Format>Multidimensional</Format> // <AxisFormat>TupleFormat</AxisFormat> oder "ClusterFormat" // </PropertyList> // </Properties> Map paraList = new HashMap(); paraList.put("DataSourceInfo", dataSource); //$NON-NLS-1$ paraList.put("Catalog", catalog); //$NON-NLS-1$ paraList.put("Format", "Multidimensional"); //$NON-NLS-1$ //$NON-NLS-2$ paraList.put("AxisFormat", "TupleFormat"); //$NON-NLS-1$ //$NON-NLS-2$ addParameterList(envelope, eEx, "Properties", "PropertyList", paraList); //$NON-NLS-1$ //$NON-NLS-2$ msg.saveChanges(); debug("Request for Execute"); //$NON-NLS-1$ logSoapMsg(msg); // run the call reply = connection.call(msg, url); debug("Reply from Execute"); //$NON-NLS-1$ logSoapMsg(reply); // error check errorCheck(reply); // process the reply SOAPElement eRoot = findExecRoot(reply); // for each axis, get the positions (tuples) Name name = envelope.createName("Axes", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$ //$NON-NLS-2$ SOAPElement eAxes = selectSingleNode(eRoot, name); if (eAxes == null) { throw new XMLAException("Excecute result has no Axes element"); //$NON-NLS-1$ } name = envelope.createName("Axis", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$ //$NON-NLS-2$ Iterator itAxis = eAxes.getChildElements(name); AxisLoop: for (int iOrdinal = 0; itAxis.hasNext();) { SOAPElement eAxis = (SOAPElement) itAxis.next(); name = envelope.createName("name"); //$NON-NLS-1$ String axisName = eAxis.getAttributeValue(name); int axisOrdinal; if (axisName.equals("SlicerAxis")) { //$NON-NLS-1$ continue; } else { axisOrdinal = iOrdinal++; } name = envelope.createName("Tuples", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ SOAPElement eTuples = selectSingleNode(eAxis, name); if (eTuples == null) { continue AxisLoop; // what else? } name = envelope.createName("Tuple", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ Iterator itTuple = eTuples.getChildElements(name); // loop over tuples int positionOrdinal = 0; while (itTuple.hasNext()) { // TupleLoop SOAPElement eTuple = (SOAPElement) itTuple.next(); if ((axisOrdinal == XMLABaseComponent.AXIS_COLUMNS) && (columnHeaders == null)) { columnCount = getChildCount(envelope, eTuples, "Tuple"); //$NON-NLS-1$ columnHeaders = new Object[getChildCount(envelope, eTuple, "Member")][columnCount]; //$NON-NLS-1$ } else if ((axisOrdinal == XMLABaseComponent.AXIS_ROWS) && (rowHeaders == null)) { rowCount = getChildCount(envelope, eTuples, "Tuple"); //$NON-NLS-1$ rowHeaders = new Object[rowCount][getChildCount(envelope, eTuple, "Member")]; //$NON-NLS-1$ } int index = 0; name = envelope.createName("Member", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ Iterator itMember = eTuple.getChildElements(name); while (itMember.hasNext()) { // MemberLoop SOAPElement eMem = (SOAPElement) itMember.next(); // loop over children nodes String caption = null; Iterator it = eMem.getChildElements(); InnerLoop: while (it.hasNext()) { Node n = (Node) it.next(); if (!(n instanceof SOAPElement)) { continue InnerLoop; } SOAPElement el = (SOAPElement) n; String enam = el.getElementName().getLocalName(); if (enam.equals("Caption")) { //$NON-NLS-1$ caption = el.getValue(); } } if (axisOrdinal == XMLABaseComponent.AXIS_COLUMNS) { columnHeaders[index][positionOrdinal] = caption; } else if (axisOrdinal == XMLABaseComponent.AXIS_ROWS) { rowHeaders[positionOrdinal][index] = caption; } ++index; } // MemberLoop ++positionOrdinal; } // TupleLoop } // AxisLoop data = new Object[rowCount][columnCount]; // loop over cells in result set name = envelope.createName("CellData", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ SOAPElement eCellData = selectSingleNode(eRoot, name); name = envelope.createName("Cell", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ Iterator itSoapCell = eCellData.getChildElements(name); while (itSoapCell.hasNext()) { // CellLoop SOAPElement eCell = (SOAPElement) itSoapCell.next(); name = envelope.createName("CellOrdinal", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ String cellOrdinal = eCell.getAttributeValue(name); int ordinal = Integer.parseInt(cellOrdinal); name = envelope.createName("Value", "", XMLABaseComponent.MDD_URI); //$NON-NLS-1$//$NON-NLS-2$ Object value = selectSingleNode(eCell, name).getValue(); int rowLoc = ordinal / columnCount; int columnLoc = ordinal % columnCount; data[rowLoc][columnLoc] = value; } // CellLoop MemoryResultSet resultSet = new MemoryResultSet(); MemoryMetaData metaData = new MemoryMetaData(columnHeaders, rowHeaders); resultSet.setMetaData(metaData); for (Object[] element : data) { resultSet.addRow(element); } rSet = resultSet; if (resultSet != null) { if (getResultOutputName() != null) { setOutputValue(getResultOutputName(), resultSet); } return true; } return false; } catch (SOAPException se) { throw new XMLAException(se); } finally { if (connection != null) { try { connection.close(); } catch (SOAPException e) { // log and ignore error("?", e); //$NON-NLS-1$ } } } }