当没有与服务器的连接时,为什么在调用HTTPService.send时没有错误?

时间:2009-12-30 13:44:15

标签: flex

我有一个围绕HTTPService的包装器,它处理可能由RESULT方法触发的FAULTINVOKEsend()事件。我已经验证了在成功请求,HTTP错误(例如404)和调用时调用了正确的事件处理程序。

我正在测试运行在localhost上的Jetty。当它关闭时,我。即我的浏览器会给我“无法建立连接”,只触发INVOKE事件,并且没有抛出任何错误。这意味着呼叫正常完成,但没有任何事情发生,导致非常令人沮丧的用户体验。

这里出了什么问题,这是一个错误还是我做错了什么?如何检测无法建立连接?

我尝试在调试器中逐步执行框架的源代码,但这是另一种蠕虫病毒,并且是很多挫折的根源。显然我似乎无法找到正确的SDK版本(在我的SDK附带的源不起作用之后,我从this download page尝试了3.0到3.5),因为调试器跳到了错误的行。我最深入地使用版本3.5,但它再次失去同步,在AsyncInvoker.invoke()的某个地方。我正在运行Flex Builder Linux,alpha 5。

3 个答案:

答案 0 :(得分:2)

这适用于Flex 3.5:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

  <mx:Script>
    import mx.controls.Alert;
  </mx:Script>

  <mx:applicationComplete>
    srv.send();
  </mx:applicationComplete>

  <mx:HTTPService id="srv" url="http://localhost:8080/foo.xml">
    <mx:fault>
      Alert.show("can't connect");
    </mx:fault>
  </mx:HTTPService>

</mx:Application>

警报显示我的本地服务器何时关闭。

答案 1 :(得分:0)

刚遇到这个,也许有帮助!

<mx:Script>
    <![CDATA[

        import mx.rpc.events.ResultEvent;

        private function faultHandler(event:mx.rpc.events.FaultEvent):void
        {
            var faultInfo:String="fault description: "+event.fault.description+"\n\n";
            faultInfo+="fault faultstring: "+event.fault.faultstring+"\n\n";
            mx.controls.Alert.show(faultInfo,"Fault Information");
            var eventInfo:String="event target: "+event.target+"\n\n";
            eventInfo+="event type: "+event.type+"\n\n";
            mx.controls.Alert.show(eventInfo,"Event Information");  
        }
    ]]>
</mx:Script>
<mx:HTTPService
      fault="faultHandler(event)"/>

我自己使用了代码并发现了使用它需要进行的两项更改我认为它是FLEX 2代码。无论如何这里是FLEX 3代码!

        <mx:Script>
        <![CDATA[

            import mx.rpc.events.ResultEvent;

            private function faultHandler(event:mx.rpc.events.FaultEvent):void {

                var faultInfo:String="fault details: "+event.fault.faultDetail+"\n\n";
                faultInfo+="fault faultString: "+event.fault.faultString+"\n\n";
                mx.controls.Alert.show(faultInfo,"Fault Information");

                var eventInfo:String="event target: "+event.target+"\n\n";
                eventInfo+="event type: "+event.type+"\n\n";
                mx.controls.Alert.show(eventInfo,"Event Information");  
            }           
        ]]>
    </mx:Script>

答案 2 :(得分:0)

是的,我的工作方式与我发送它没有任何问题。不幸的是我无法帮助Linux等aktell