Actionscript 3 Flex httpservice错误处理
我使用的是httpservice,一旦它被调用,一切都不会发生。我没有得到结果或错误?我添加了各种侦听器,但无法捕获任何错误。我错过什么了吗Actionscript 3 Flex httpservice错误处理,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,我使用的是httpservice,一旦它被调用,一切都不会发生。我没有得到结果或错误?我添加了各种侦听器,但无法捕获任何错误。我错过什么了吗 private function GetUsersServers():void { var serviceObj:HTTPService = new HTTPService(); serviceObj.resultFormat = 'text'; serviceObj.method = 'GE
private function GetUsersServers():void
{
var serviceObj:HTTPService = new HTTPService();
serviceObj.resultFormat = 'text';
serviceObj.method = 'GET';
serviceObj.useProxy = false;
serviceObj.addEventListener(ResultEvent.RESULT, GetUsersServersResult);
serviceObj.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
serviceObj.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
serviceObj.addEventListener(Event.COMPLETE, onLoadComplete);
serviceObj.url = '************************';
var parameters:Object = new Object();
parameters["Username"] = m_strUserSIP;
LogAddItem( -1, "GetUsersServers Request - User = " + parameters.Username);
serviceObj.send(parameters);
}
private function onLoadComplete(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "securityErrorHandler: " + loader.data);
}
// check for security error - probably crossdomain issue
private function securityErrorHandler(event:SecurityErrorEvent):void {
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "securityErrorHandler: " + event);
}
public function onLoadError(e:IOErrorEvent):void {
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Fault: " + e.text);
}
private function GetUsersServersResult(event:ResultEvent):void
{
LogAddItem( -1, "GetUsersServers Result Received..");
var rawData:String = String(event.result);
LogAddItem( -1, "GetUsersServersResult = " + rawData);
InitContinue();
}
问题很可能是您在函数
GetUsersServers()
中声明了HTTPService
。当该函数完成时,包含HTTPService
的变量不再存在,并且符合垃圾收集的条件
相反,如果您将HTTPService
声明为成员变量,则该变量将在其所在类的整个生命周期内存在。因此,请尝试以下方法:
private var serviceObj:HTTPService;
private function GetUsersServers():void
{
serviceObj = new HTTPService();
...
}
我已经做了此更改,但不幸的是,我仍然没有得到结果/错误。我的侦听器正确吗?我可以添加更多吗?只要实例附加了事件侦听器,它就不符合垃圾收集的条件。恐怕这不是问题的原因,这取决于如何添加侦听器。我也想过。在本例中,一个侦听器被添加到HTTPService,事件处理函数位于“this”类中。所以HTTPService维护对“this”类的引用。。。“This”类除了在函数内部之外没有对HTTPService的引用。@VinceLowe看起来您的事件侦听器也错了。看看哪个显示了由HTTPService调度的事件。特别是,您没有添加“fault”事件处理程序,并且请注意HTTPService根本不发送“security”、“IOError”或“complete”事件;我没有看到您在中侦听的任何错误事件。