{
body : {
ns0#OrderTshirtResponse: {
orderId: "I got a request from "
++ payload.body.ns0#OrderTshirt.name
++ " using the following auth header "
++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "")
}
} write "application/xml"
}
Set a SOAP Header
Use APIkit to set headers to your application’s response based on the WSDL declarations.
To follow this example, you must download the tshirt2.wsdl
API definition, and create a Mule application based on it.
See prerequisites for Using APIkit for SOAP and create an APIkit for SOAP project for more information.
In this example, you add the APIUsageInformation
header to the response of your application:
-
In Anypoint Studio, open
tshirt2.wsdl
insrc/main/resources/api
and scroll to theAPIUsageInformation
element, which is the element expected by the contract. -
On the canvas, select
Transform Message
in theOrderTshirt:/soapkit-config
flow.The following DataWeave code is available:
-
Add the following
APIUsageInformation
header declaration:{ body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { (1) header: { ns0#APIUsageInformation: { } } write "application/xml" } }
1 This DataWeave code adds headers to the output of the Transform Message
component. -
Add the
apiCallsRemaining
header to theAPIUsageInformation
element:{ body : { ns0#OrderTshirtResponse: { orderId: "I got a request from " ++ payload.body.ns0#OrderTshirt.name ++ " using the following auth header " ++ (payload.headers["AuthenticationHeader"].ns0#AuthenticationHeader.apiKey default "") } } write "application/xml", headers: { header: { ns0#APIUsageInformation: { apiCallsRemaining: 10 (1) } } write "application/xml" } }
1 Set apiCallsRemaining
to10
. -
Save and run the project again.
-
In SoapUI, execute the
OrderTshirt
request again.The response envelope from APIkit for SOAP is:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ns0:APIUsageInformation xmlns:ns0="http://mulesoft.org/tshirt-service">
<apiCallsRemaining>10</apiCallsRemaining>
</ns0:APIUsageInformation>
</soap:Header>
<soap:Body>
<ns0:OrderTshirtResponse xmlns:ns0="http://mulesoft.org/tshirt-service">
<orderId>I got a request from John, using the following auth header 987654321</orderId>
</ns0:OrderTshirtResponse>
</soap:Body>
</soap:Envelope>