You can add custom SOAP headers using the following methods:
Using the Payload Factory mediator
You can add custom SOAP headers to a request by using the PayloadFactory Mediator in the proxy service as shown in the example below.
<definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="StockQuoteProxy" transports="https http" startOnLoad="true" trace="disable"> <description/> <target> <endpoint> <address uri="http://localhost:9001/services/SimpleStockQuoteService"/> </endpoint> <inSequence> <log level="full"/> <payloadFactory media-type="xml"> <format> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://services.samples/xsd" xmlns:ser="http://services.samples"> <soapenv:Header> <ser:authenticationRequest> <userName xmlns="">$1</userName> <password xmlns="">$2</password> </ser:authenticationRequest> </soapenv:Header> <soapenv:Body> <ser:getQuote> <ser:request> <xsd:symbol>$3</xsd:symbol> </ser:request> </ser:getQuote> </soapenv:Body> </soapenv:Envelope> </format> <args> <arg value="punnadi"/> <arg value="password"/> <arg value="hello"/> </args> </payloadFactory> </inSequence> <outSequence> <send/> </outSequence> </target> <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/> </proxy> <sequence name="fault"> <log level="full"> <property name="MESSAGE" value="Executing default "fault" sequence"/> <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/> <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/> </log> <drop/> </sequence> <sequence name="main"> <log/> <drop/> </sequence> </definitions>
Using the Script mediator
You can add custom SOAP headers to a request by using the Script Mediator in the proxy service as shown in the example below.
<proxy xmlns="http://ws.apache.org/ns/synapse" name="CustomSOAPHeaderProxy" startOnLoad="true" statistics="disable" trace="disable" transports="http,https"> <target> <inSequence> <log level="full"> <property name="Message" value="IncomingRequest"/> </log> <script language="js">mc.addHeader(false, <ns:sampleCustomHeader xmlns:ns="gsb:http://wso2.org/sample"><ns:customInfo>CustomHeader</ns:customInfo></ns:sampleCustomHeader>);</script> <log level="full"> <property name="Message" value="UpdatedMessage"/> </log> <drop/> </inSequence> </target> <description/> </proxy>