Actionscript 3 Flex 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

我使用的是httpservice,一旦它被调用,一切都不会发生。我没有得到结果或错误?我添加了各种侦听器,但无法捕获任何错误。我错过什么了吗

    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”事件;我没有看到您在中侦听的任何错误事件。