Hello.

I have an example of a SOAP request.

<?xml version="1.0" encoding="UTF-8" ?> <SOAP:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP:Body> <GetParameter xmlns="http://examples/2001"> <request> <MonCode xmlns="http://newsite/mon">Latency</MonCode> <TimeFrom xmlns="http://newsite/mon">2016-10-26T11:00</TimeFrom> <TimeTo xmlns="http://newsite/mon">2016-10-26T12:00</TimeTo> </request> </GetParameter> </SOAP:Body> </SOAP:Envelope> 

I form a SOAP request for JAVA, using the SAAJ API

next code

  MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); SOAPPart soapPart = message.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.addNamespaceDeclaration("xsd", "http://www.w3.org/2001/XMLSchema"); envelope.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance"); envelope.addNamespaceDeclaration("soap", "http://schemas.xmlsoap.org/soap/envelop/"); SOAPBody body = message.getSOAPBody(); SOAPElement bodyElement = body.addChildElement("GetParameter"); bodyElement.setAttribute("xmlns", "http://examples/2001"); bodyElement = body.addChildElement("request"); SOAPElement paramsElement = bodyElement.addChildElement("MonCode"); paramsElement.setAttribute("xmlns", "http://newsite/mon"); paramsElement.addTextNode("Latency"); paramsElement = bodyElement.addChildElement("TimeFrom"); paramsElement.setAttribute("xmlns", "http://newsite/mon"); paramsElement.addTextNode("2016-10-26T11:00"); paramsElement = bodyElement.addChildElement("TimeTo"); paramsElement.setAttribute("xmlns", "http://newsite/mon"); paramsElement.addTextNode("2016-10-26T12:00"); 

as a result I receive such SOAP request

 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelop/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header/> <SOAP-ENV:Body> <GetParameter xmlns=""/> <request> <MonCode xmlns="">Latency</MonCode> <TimeFrom xmlns="">2016-10-26T11:00</TimeFrom> <TimeTo xmlns="">2016-10-26T12:00</TimeTo> </request> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 

All is well, BUT somewhere the values ​​of the attributes " http: // examples / 2001 " " http: // newsite / mon " disappear .

What is my mistake and how to solve this problem?

    1 answer 1

    the result is the following

            MessageFactory messageFactory = MessageFactory.newInstance ();
             SOAPMessage soapMessage = messageFactory.createMessage ();
    
     // Retrieve different parts
             SOAPPart soapPart = soapMessage.getSOAPPart ();
             SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart (). GetEnvelope ();
    
             soapEnvelope.addNamespaceDeclaration ("xsd", "http://www.w3.org/2001/XMLSchema");
             soapEnvelope.addNamespaceDeclaration ("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    
     // Two ways to extract headers
         // SOAPHeader soapHeader = soapEnvelope.getHeader ();
         // soapHeader = soapMessage.getSOAPHeader ();
    
     // Two ways to extract body
             SOAPBody soapBody = soapEnvelope.getBody ();
             soapBody = soapMessage.getSOAPBody ();
    
     // To add some element
    
             SOAPElement GetParamter = soapBody.addBodyElement (new javax.xml.namespace.QName ("http: // examples / 2001", "GetParamter"));
    
             GetParamter = GetParamter.addChildElement (new javax.xml.namespace.QName ("request"));
             SOAPElement MonCode = GetParamter.addChildElement (new javax.xml.namespace.QName ("http: // newsite / mon", "MonCode"));
             MonCode.addTextNode ("Latency");
    
             SOAPElement TimeFrom = GetParamter.addChildElement (new javax.xml.namespace.QName ("http: // newsite / mon", "TimeFrom"));
             TimeFrom.addTextNode ("2016-10-26T11: 00");
    
             SOAPElement TimeTo = GetParamter.addChildElement (new javax.xml.namespace.QName ("http: // newsite / mon", "TimeTo"));
             TimeTo.addTextNode ("2016-10-26T12: 00");
    

    resulting SOAP request

     <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header/> <SOAP-ENV:Body> <GetParamter xmlns="http://examples/2001"> <request> <MonCode xmlns="http://newsite/mon">Latency</MonCode> <TimeFrom xmlns="http://newsite/mon">2016-10-26T11:00</TimeFrom> <TimeTo xmlns="http://newsite/mon">2016-10-26T12:00</TimeTo> </request> </GetParamter> </SOAP-ENV:Body> </SOAP-ENV:Envelope>