Hi Casey,
In this example, the SOAP Header contains two values in UsernameToken: Username and Password:
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="
http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd">
<wsse:UsernameToken>
<wsse:
Username>{{MID}}</wsse:Username>
<wsse:
Password Type="
http://docs.oasis-open.org/wss/2004/01/ ... e:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
In a WSDL SOAP solution using Integrator, SOAP Header values can be filled using an AGENT_INCLUDE.TXT text file. When you compile the SOAP solution, this file should be there and the compile will implement this in the final .jar file:

- AGENT_INCLUDE (1).JPG (28.47 KiB) Viewed 22017 times
The AGENT_INCLUDE.TXT contains the username and password:
*********************************************************************************************************************
/*
Add SOAP header session
*/
javax.xml.soap.SOAPFactory soapFactory = new org.apache.axis.soap.SOAPFactoryImpl () ;
javax.xml.soap.Name headerName = soapFactory.createName ( "Security", "wsse", "
http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd" ) ;
org.apache.axis.message.SOAPHeaderElement elementHead = new org.apache.axis.message.SOAPHeaderElement ( headerName ) ;
elementHead.addAttribute(soapFactory.createName("soapenv:mustUnderstand"), "1");
javax.xml.soap.SOAPElement elementUsernameToken = elementHead.addChildElement ( "UsernameToken" ) ;
javax.xml.soap.SOAPElement elementUsername = elementUsernameToken.addChildElement( "
Username" ) ;
elementUsername.addTextNode (
user ) ;
javax.xml.soap.SOAPElement elementPassword = elementUsernameToken.addChildElement ( "
Password" ) ;
elementPassword.addTextNode ("pLnpcwb3Jk0QO5ogqg9OlhEkwBbo0QP5zA7zIXEjsxXYmhvSJhVJYtcIYf0z7mphdDh2DSDg9iwUeLAHNLr81qB8jEcDrjE3fMiNAyv116KbzdtgZDw04rm9cKhRu+nNJqjkeABtF/SgCI42WOfM19WpVdcsZ0LaFTMxOHscZ3PV/EK+Pyhz4F+b5i+dmHl544BtEbAmL8yP8tFIZB+Ovi67wjccZyas+4ITNPuzD3KEzW8WTrk9NLScEpMYQXvlGU1wILj6b+v2lsXYMg9E2TT9r4Qpc0Pv6u2stx34Td47Ha9Q4ulfUgbd/9B2kwNFNme3dvi7t4Ywa3ml3Ui1Zg==") ;
elementPassword.addAttribute(soapFactory.createName("Type"), "
http://docs.oasis-open.org/wss/2004/01/ ... sswordText");
stub.setHeader ( elementHead ) ;
*********************************************************************************************************************
The password in the example above is hardcoded in the AGENT_INCLUDE.TXT. The username is not. If a value is not filled hardcoded in the agent include, it needs to be filled in the LANSA program, as part of the service CALL, for example:
* Call remote service
#JSMXCMD := 'CALL USER(renetest11)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
This AGENT_INCLUDE.TXT does not contain hardcoded values:
*********************************************************************************************************************
/*
Add SOAP header session
*/
javax.xml.soap.SOAPFactory soapFactory = new org.apache.axis.soap.SOAPFactoryImpl () ;
javax.xml.soap.Name headerName = soapFactory.createName ( "Security", "wsse", "
http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd" ) ;
org.apache.axis.message.SOAPHeaderElement elementHead = new org.apache.axis.message.SOAPHeaderElement ( headerName ) ;
elementHead.addAttribute(soapFactory.createName("soapenv:mustUnderstand"), "1");
javax.xml.soap.SOAPElement elementUsernameToken = elementHead.addChildElement ( "UsernameToken" ) ;
javax.xml.soap.SOAPElement elementUsername = elementUsernameToken.addChildElement( "Username" ) ;
elementUsername.addTextNode (
user ) ;
javax.xml.soap.SOAPElement elementPassword = elementUsernameToken.addChildElement ( "Password" ) ;
elementPassword.addTextNode (
password ) ;
stub.setHeader ( elementHead ) ;
*********************************************************************************************************************
And could be filled by aLANSA program like:
* Call remote service
#JSMXCMD := 'CALL USER(renetest11) PASSWORD(pLnpcwb3Jk0QO5ogqg9OlhEkwBbo0QP5zA7zIXEjsxXYmhvSJhVJYtcIYf0z7mphdDh2DSDg9iwUeLAHNLr81qB8jEcDrjE3fMiNAyv116KbzdtgZDw04rm7cKhRu+nNJqjkeABtF/SgCI42WOfM19WpVdcsZ0LaFTMxOHscZ3PV/EK+Pyhz4F+b5i+dmHl544BtEbAmL8yP8tFIZB+Ovi67wjclTyas+4ITNPuzD3KEzW8WTrk9NLScEpXYZXvlGU1wILj6b+v2lsXYMg9E2TT9r4Qpc0Pv6u2stx34Td47Xt9Q4ulfUgbd/9B2kwNFNme3dvi7t4Ywa3ml3Ui1Zg==)'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMXSTS #JSMXMSG)
Execute Subroutine(CHECK) With_Parms(#JSMXSTS #JSMXMSG)
The AGENT_INCLUDE.TXT can always be extended with other SOAP Header values, like:
*********************************************************************************************************************
/*
Add SOAP header session
*/
javax.xml.soap.SOAPFactory soapFactory = new org.apache.axis.soap.SOAPFactoryImpl () ;
javax.xml.soap.Name headerName = soapFactory.createName ( "SecuritySoapHeader", "vrm", "EurotaxGlass's/WebService/VehicleLookup/VRM" ) ;
org.apache.axis.message.SOAPHeaderElement elementHead = new org.apache.axis.message.SOAPHeaderElement ( headerName ) ;
// org.apache.axis.message.SOAPHeaderElement elementHead = new org.apache.axis.message.SOAPHeaderElement ( "SecuritySoapHeader" ) ;
javax.xml.soap.SOAPElement elementClientCode = elementHead.addChildElement ( "ClientCode" ) ;
elementClientCode.addTextNode ( "Demo" ) ;
javax.xml.soap.SOAPElement elementAccount = elementHead.addChildElement ( "AccountName" ) ;
elementAccount.addTextNode ( user ) ;
javax.xml.soap.SOAPElement elementPwd = elementHead.addChildElement ( "Password" ) ;
elementPwd.addTextNode ( password ) ;
stub.setHeader ( elementHead ) ;
*********************************************************************************************************************
Kind regards,
René