Try OpenEdge Now
skip to main content
Web Services
Creating ABL Clients to Consume OpenEdge SOAP Web Services : Handling SOAP Message Headers in ABL : SOAP message headers: an overview : SOAP header structure
 
SOAP header structure
The following XML contains a SOAP header as it might appear inside a SOAP message:

SOAP message with header

<soap:Envelope>
   xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   . . .
   <soap:Header>
      <q1:OrderInfoID
                   xmlns:q1="http://www.example.com/webservices/OrderInfo"
                   SOAP-ENV:mustUnderstand="1"
                   SOAP-ENV:actor="/WSA">
         <uuid xsi:type="xsd:string">12345-67890-98765-4321</uuid>
      </q1:OrderInfoID>
      <t:Transaction
                   xmlns:t="http://www.example.com/webservices/Transaction"
                   SOAP-ENV:mustUnderstand="1" t:stepnum="1">
         <t:TransID>5</t:TransID>
         <t:SubID>871</t:SubID>
      </t:Transaction>
   </soap:Header>
   <soap:Body ...>
      <parameter-element> ... </parameter-element>
      . . .
   </soap:Body>
</soap:Envelope >
As you can see, the <Header> element is only a container for other elements, the application-specific header entry elements. Any parameters generated for an operation in this SOAP message appear in the <Body> element in much the same way.
In this case, the SOAP header contains two header entries, named q1:OrderInfoID and t:Transaction (where q1: and t: are namespace prefixes). Each of these elements has a series of attributes and contains one or more child elements. The <q1:OrderInfoID> element contains one child element named uuid, and the <t:Transaction> element contains two child elements, named t:TransID and t:SubID. All of these element names are application-defined.
* Accessing the SOAP header
* Requirements for header handlers