MetaService 1.0 : Creating a Flex Client

Important note:
Do not create a browser based clients that contain your Webcast Management System username and password. If you are looking to implement something like this, please request a new account specifically for the MetaService at .

Adobe's Flex has good support for consuming webservices through it's built in WebService Component. Flex's Eclipse based IDE has a feature that will let you generate proxy classes, but at the time of writing this feature seems to fail on importing WSDL files that contain any type of SecurityPolicy parameters. It may be possible to manually remove the Security parameters from the WSDL file, and use this modified file to create the proxy classes.

The sample code below does not follow this method, instead it uses the WebService Component's feature that will let you manually format the request messages.

While debugging these "in browser" type clients, it's very usefull to monitor their web traffic with tools like HttpFox and Fiddler. Note that Fiddler requires a little bit more fiddling before it will let you look at SSL traffic.

{this.Username} {this.Password} {this.SelectedWebcastCode} {this.SelecteWebcastLanguage} {this.Username} {this.Password} {this.OwnerName.text} {this.TopicTitle.text} {this.SpeakerLastName.text} {this.WebcastTitle.text} {this.PeriodFrom.selectedDate} {this.PeriodTo.selectedDate} {this.Status.selectedItem} 0 100
Bindable private var Username:String = "testusername"; Bindable private var Password:String = "testpassword"; Bindable private var SelectedWebcastCode:String; Bindable private var SelecteWebcastLanguage:String; Bindable private var CurrentWebcastGet:Object; Bindable private var CurrentWebcastSearch:Object;

// Handles Soap errors from the WebService Component public function SoapFault(error:Object):void { Alert.show(error.fault.faultString,"Error"); }

// Handles incoming messages from the MetaService public function ProcessResult(result:Object):void { if (CurrentWebcastGet != ws.WebcastGet.lastResult) { CurrentWebcastGet = ws.WebcastGet.lastResult; } if (CurrentWebcastSearch != ws.WebcastSearch.lastResult) { CurrentWebcastSearch = ws.WebcastSearch.lastResult; } } // Fires when the selected webcast in the List Component changes public function SelectedWebcastChange(event:Object):void { SelectedWebcastCode = event.itemRenderer.data.Code; SelecteWebcastLanguage = event.itemRenderer.data.Languages0; ws.WebcastGet.send() }

public function DoSearch():void { ws.WebcastSearch.send() } // Called by the List Component while databinding, returns the string to display private function TopicsLabelFunction(Topic:Object):String { return Topic.Title; } ]]>