Here's how I did it a way back... not using this anymore but I'm 
pretty sure it worked at the time ;-)

import mx.rpc.soap.SOAPHeader;

private function login():void{
  ModelLocator.getInstance().qname = new QName("http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-
1.0.xsd","Security");
  ModelLocator.getInstance().headerSecurity = new SOAPHeader
(ModelLocator.getInstance().qname,

  XML(String( "<wsse:Security " + 
              " xmlns:wsse='http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'" + 
              " xmlns:wsu='http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'>" 
+ 
              "<wsse:UsernameToken wsu:Id='"+username_ti.text+"'>" +
              "<wsse:Username>"+username_ti.text+"</wsse:Username>" +
              "<wsse:Password>"+password_ti.text+"</wsse:Password>" +
              "</wsse:UsernameToken>" +
              "</wsse:Security>")) );

  ourService.addHeader(ModelLocator.getInstance().headerSecurity);
  ourService.myWebService.send();
}

Hope this helps.

Jamie.

--- In [email protected], "pusateri02" <[EMAIL PROTECTED]> 
wrote:
>
> Hello -
> 
> I'm having a hard time figuring out how to add a header in Flex. I 
> need to pass a UserName and Password back to the Web Service in 
> order to get back the results.  In this case the result is just an 
> XML which I then parsed and formated in Flash.  Can anyone lend a 
> hand that has done it successfully? I went over the built-in help 
> but it isn't making a lot of sence to me. So far the only help 
I've 
> gotten is don't use the <WebService> tag. Here's what I used in 
> Flash 7 (and it works), maybe this will help someone help me 
convert 
> what I need - 
> 
> // START WEB SERVICE CALL \\
> function addSOAPHeaderFix() {
> if (mx.services.PendingCall.prototype.__encodeSOAPHeader__ != 
null) {
> return;
> }
> mx.services.PendingCall.prototype.__encodeSOAPHeader__ = 
> mx.services.PendingCall.prototype.encodeSOAPHeader;
> mx.services.PendingCall.prototype.encodeSOAPHeader = function() {
> var theService = 
this.myCall.wsdlOperation.wsdl.serviceProxy.service;
> // here is how to do headers that apply to all calls
> for (var i = 0; i < theService.headersForAllCalls.length; i++) {
> this.addHeader(theService.headersForAllCalls);
> }
> // here is how to do headers that apply to only one specific call
> for (var j = 0; j < theService.headersForOneCall.length; j++) {
> this.addHeader(theService.headersForOneCall[j]);
> }
> theService.headersForOneCall = null;
> this.__encodeSOAPHeader__();
> };
> }
> addSOAPHeaderFix();
> var service:mx.services.WebService;
> service = new mx.services.WebService
("http://radar.net/RadarXML.asmx?
> WSDL");
> var header1 = new XML('<AuthHeader 
> 
xmlns="http://tempuri.org/";><UserName>admin</UserName><Password>admin
> </Password></AuthHeader>');
> service.headersForAllCalls = new Array();
> service.headersForAllCalls.push(header1);
> var myObj:mx.services.PendingCall = service.PullXML();
> //
> // IF no fault has occured then XML is received \\
> myObj.onResult = function(result) {
> // change results to Flash XML \\
> _global.theResults = new XML(result);
> // strip out any white space \\
> theResults.firstChild.stripWhite();
> //load necessary script \\
> loadAndSeperate();
> };
> // IF a fault occures get XML \\
> myObj.onFault = function(result) {
> _global.theResults = new XML();
> theResults.ignoreWhite = true;
> theResults.onLoad = function(success) {
> loadAndSeperate();
> };
> // load the XML into the XML object
> theResults.load("PublishXML/PublishedProjects.xml");
> };
> // END WEB SERVICE CALL \\
>


Reply via email to