Very cool, Ben. I gave it a whirl and got it to work with e4x. Much
better syntax than having to specify the
"children().children().children()" garbage.
I've been developing business apps in Flash 8 for the past year and a
half, and am just now converting over to using Flex 2. So, now it's a
bit of retooling for me, but I'm really loving Flex 2 so far.
So now I have a login web service like this:
import mx.rpc.soap.WebService;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
// globals
public var sessionID:String = new String('');
public var partnerID:String = new String('');
public var statesArray:Array = new Array();
public var loginMessage:String = new String('');
public var ws:WebService = new mx.rpc.soap.WebService();
// Login user
public function login(event:flash.events.Event):void
{
var login:Object = new Object();
login.UserID = userID_txt.text.toUpperCase();
login.Password = password_txt.text.toUpperCase();
ws.useProxy = false;
ws.LoginOperation.addEventListener("result", loginResultHandler);
ws.LoginOperation.resultFormat = 'e4x';
ws.addEventListener("fault", loginFaultHandler);
ws.loadWSDL('https://myserver.com/Login.wsdl');
ws.LoginOperation(login);
}
public function loginResultHandler(event:ResultEvent):void
{
var xmlDoc:XML = new XML(ws.LoginOperation.lastResult);
sessionID = xmlDoc.*::[EMAIL PROTECTED];
partnerID = xmlDoc.*::[EMAIL PROTECTED];
var states:String = xmlDoc.*::[EMAIL PROTECTED];
loginMessage = xmlDoc.*::[EMAIL PROTECTED];
Alert.show('session: ' + sessionID + '\npartner: ' + partnerID +
'\nstates: ' + states + '\nmessage: ' + loginMessage);
// Convert states string to array
statesArray = states.split(',');
// Set up app based on user authorities
setAuthorities();
}
public function loginFaultHandler(event:FaultEvent):void { }
I guess what I'm wondering about now is there a cleaner way to handle
the result event? What I mean is that the event:ResultEvent that is
automatically passed to the handler seems a waste, since it is not
needed or referenced.
Thanks,
Ron