on 12-14-2015 5:30 AM
Hi Experts, I need to set the soap headers from the xml which i have . with that i need to call the certain services. kindly help me in solving the problem Code :- import java.io.*; import java.net.MalformedURLException; import org.apache.cxf.binding.soap.SoapHeader; import java.util.ArrayList; import java.util.List; import org.apache.cxf.binding.soap.SoapHeader; import org.apache.xmlbeans.impl.soap.SOAPHeaderElement; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class SFDC_New { public static void main (String args[])throws ParserConfigurationException, TransformerException, MalformedURLException { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); dbf.setIgnoringElementContentWhitespace(true); dbf.setValidating(false); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.newDocument(); Element Envelope = doc.createElementNS("http://schemas.xmlsoap.org/soap/envelope/", "Envelope"); Envelope.setPrefix("soapenv"); Envelope.setAttribute("xmlns:urn", "urn:enterprise.soap.sforce.com"); Element Header = doc.createElement("soapenv:Header"); //Header.setPrefix("soapenv"); Envelope.appendChild(Header); Element PackageVersionHeader = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:PackageVersionHeader"); Header.appendChild(PackageVersionHeader); Element PackageVersions = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:PackageVersions"); PackageVersionHeader.appendChild(PackageVersions); Element majorNumber = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:majorNumber"); PackageVersions.appendChild(majorNumber); Element minorNumber = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:minorNumber"); PackageVersions.appendChild(minorNumber); Element namespace = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:namespace"); PackageVersions.appendChild(namespace); Element MruHeader = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:MruHeader"); Header.appendChild(MruHeader); Element updateMru = doc.createElementNS("urn:enterprise.soap.sforce.com" , "urn:updateMru"); MruHeader.appendChild(updateMru); Element QueryOptions = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:QueryOptions"); Header.appendChild(QueryOptions); Element batchSize = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:batchSize"); QueryOptions.appendChild(batchSize); Element SessionHeader = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:SessionHeader"); Header.appendChild(SessionHeader); Element sessionId = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:sessionId"); SessionHeader.appendChild(sessionId); Element Body = doc.createElement("soapenv:Body"); Envelope.appendChild(Body); Element query = doc.createElementNS("urn:enterprise.soap.sforce.com","urn:query"); Body.appendChild(query); Element queryString = doc.createElementNS("urn:enterprise.soap.sforce.com", "urn:queryString"); query.appendChild(queryString); StringWriter sw = new StringWriter(); StreamResult result = new StreamResult(sw); DOMSource source = new DOMSource(Envelope); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.transform(source, result); String xmlString = sw.toString(); //System.out.println(xmlString); SoapHeader soapHeader = new SoapHeader(new QName(Envelope.getNamespaceURI(), Envelope.getLocalName()), Envelope); soapHeader.setMustUnderstand(true); List headersList = new ArrayList(); List headerList = new ArrayList(); headerList.add(xmlString); //System.out.println("Headers List is " +headerList); System.out.println(headerList); } } When i am running the code i am getting the error as Headers are null. Thanks in advance, Vijay
0 2 Vijay 1 1 Vijay queryString
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Dihiansan, The code which you given is superb,and it is working fine. But i need to send the xml headers generated out of your code needs to send as a SOap headers so i need to know how can i send that. Also your code contains static methods which is fine but in HCI to put i need to have only non-static methods, so i have changed my code as per your code reference . So kindly help me in setting the SOAP Headers in java. Thanks and Regards, Vijay
Hi Vijay,
Also your code contains static methods which is fine but in HCI to put i need to have only non-static methods, so i have changed my code as per your code reference . So kindly help me in setting the SOAP Headers in java. Thanks and Regards, Vijay
Commenting these out in your code
// | SoapHeader soapHeader = new SoapHeader(new QName(Envelope.getNamespaceURI(),Envelope.getLocalName()), Envelope); | |
// | soapHeader.setMustUnderstand(true); | |
// | List headersList = new ArrayList(); | |
// | List headerList = new ArrayList(); | |
// | headerList.add(xmlString); | |
//System.out.println("Headers List is " +headerList); | ||
// | System.out.println(headerList); |
Already produces a SOAP Header without any values. If you want to set values, use the setTextContext method e.g adding this line
Would already set a value for majorNumber
Regards,
Mark
User | Count |
---|---|
84 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.