ColdFusion includes a set of functions that enable your web service to get and set request and response headers. You use these functions to retrieve the response headers from a web service request and to create SOAP headers in a request that has the mustUnderstand attribute set to be True.
You typically use different functions in web services clients and in the web service CFC, itself:
In the client:
In the web service CFC:
The following example CFM page uses the AddSOAPRequestHeader, getSOAPRequest, and GetSOAPResponse functions:
<cfsavecontent variable="my_xml">
<Request xmlns="http://www.oasis-open.org/asap/0.9/asap.xsd">
<SenderKey>ss</SenderKey>
<ReceiverKey>zz</ReceiverKey>
<ResponseRequired>Yes</ResponseRequired>
<RequestID>id</RequestID>
</Request>
</cfsavecontent>
<cfset xml_obj = xmlparse(my_xml)>
<cfscript>
ws = CreateObject("webservice", "http://localhost:8500/soapexamples/HeaderFuncs.cfc?WSDL");
addSOAPRequestHeader(ws, "http://www.cfdevguide.com/", "testrequestheader", "#xml_obj#");
</cfscript>
<cfscript>
ret=ws.showSOAPHeaders();
inxml = getSOAPRequest(ws);
outxml = getSOAPResponse(ws);
</cfscript>
<cfoutput>
<h2>Return Value</h2>
<!--- This is XML, so use HTMLCodeFormat. --->
The return value was #ret#
<h2>Complete Request XML</h2>
#htmlcodeformat(inxml)#
<h2>Complete Response XML</h2>
#htmlcodeformat(outxml)#
</cfoutput>
The following example CFC uses the IsSOAPRequest and AddSOAPResponseHeader functions:
<cfcomponent>
<cffunction 
 name = "showSOAPHeaders" 
 returnType = "string" 
 output = "no"
 access = "remote"
     hint="After calling this function, use GetSOAPRequest and GetSOAPResponse to view headers">
    <cfset var xml_obj = "">
    <cfset var ret = "">
<cfif IsSOAPRequest()>
<!--- Define a response header --->
<cfsavecontent variable="response_xml">
 <ThisResponseHeader xmlns="http://www.cfdevguide.com">
 <CreatedDateTime><cfoutput>#now()#</cfoutput></CreatedDateTime>
 <ExpiresInterval>6000</ExpiresInterval>
 </ThisResponseHeader>
</cfsavecontent>
<cfset xml_obj = xmlparse(response_xml)>
<!--- Add the response header --->
<cfscript>
addSOAPResponseHeader("http://www.cfdevguide.com/", "testresponseheader", "#xml_obj#");
ret = "Invoked as a web service. Use GetSOAPRequest and GetSOAPResponse to view headers.";
    </cfscript>
<cfelse>
<cfset ret = "Not invoked as a web service">
</cfif>
<cfreturn ret>
</cffunction>
</cfcomponent>