Android Flex的HTTPService调度ResultEvent而不是FaultEvent

Android Flex的HTTPService调度ResultEvent而不是FaultEvent,android,actionscript-3,apache-flex,air,flex-mobile,Android,Actionscript 3,Apache Flex,Air,Flex Mobile,我想知道Flex的HTTPService何时启动ResultEvent,何时发送FaultEvent 当服务器响应包含401 http状态代码错误Unauthorized时,HTTPService将调度ResultEvent而不是FaultEvent。我认为它应该发送一个FaultEvent。我说得对吗?如果没有,请告诉我 令人惊奇的是,当我在Flash Builder 4.7的Android模拟器下运行应用程序时,它确实会发送FaultEvent,但当我在设备上运行它时,它会发送ResultE

我想知道Flex的HTTPService何时启动ResultEvent,何时发送FaultEvent

当服务器响应包含401 http状态代码错误Unauthorized时,HTTPService将调度ResultEvent而不是FaultEvent。我认为它应该发送一个FaultEvent。我说得对吗?如果没有,请告诉我

令人惊奇的是,当我在Flash Builder 4.7的Android模拟器下运行应用程序时,它确实会发送FaultEvent,但当我在设备上运行它时,它会发送ResultEvent。为什么会这样?有什么想法吗

测试应用程序代码

按下高级按钮HTTPService时,文本区域上的文本为:

Connecting to server using a high level component 
... 
Entering servicefaultHandler
HTTP status code is: 401
Connecting to server using a low level component 
... 
Entering openHandler 
openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2] 
Entering httpStatusHandler 
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2    status=401 redirected=false responseURL=null] 
Entering completeHandler 
completeHandler: 
Connecting to server using a high level component 
... 
Entering serviceResultHandler
HTTP status code is: 401
Android设备上的结果

按下低级别按钮URL Loader时,文本区域上的文本为:

Connecting to server using a high level component 
... 
Entering servicefaultHandler
HTTP status code is: 401
Connecting to server using a low level component 
... 
Entering openHandler 
openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2] 
Entering httpStatusHandler 
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2    status=401 redirected=false responseURL=null] 
Entering completeHandler 
completeHandler: 
Connecting to server using a high level component 
... 
Entering serviceResultHandler
HTTP status code is: 401
按下高级按钮HTTPService时,文本区域上的文本为:

Connecting to server using a high level component 
... 
Entering servicefaultHandler
HTTP status code is: 401
Connecting to server using a low level component 
... 
Entering openHandler 
openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2] 
Entering httpStatusHandler 
httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2    status=401 redirected=false responseURL=null] 
Entering completeHandler 
completeHandler: 
Connecting to server using a high level component 
... 
Entering serviceResultHandler
HTTP status code is: 401
当我在Flash Builder的模拟器上运行应用程序时,这两个组件都按预期工作,这意味着它们发送了一个FaultEvent和一个IOErrorEvent。在Android设备上,每个组件的行为都不正常,第一个组件调度ResultEvent,第二个组件调度Event.COMPLETE事件

请注意,在这两种情况下,两个组件都能感知到正确的HTTP状态代码


我假设运行时有问题,对吗?非常感谢您对此事的评论。

我认为这里有一些误解需要首先澄清:

但从这个意义上讲,成功意味着我们成功地建立了联系并得到了回应

服务器使用任何HTTP状态代码响应都是完全有效的,在本例中,状态401-未经授权,表示您访问了服务器,但试图访问您没有权限访问的位置

。但这里的失败是没有建立连接或没有收到响应

More over FaultEvent是Fault error类的事件包装器,它表示远程过程调用RPC服务调用中的错误。最常见的变体是IOError 2032:Stream Error,它因其模糊性而臭名昭著

现在了解调试器和发布版本之间行为不同的原因:

当Capabilities.isDebugger为true时,闪存以不同的方式处理错误。一个是打开一个对话框,以便在发生错误时进行操作


这是推测,因为我找不到任何文档,但如果发现HTTPService将ResultEvent:401更改为FaultEvent:401,并利用调试错误对话框将其转换为故障错误,我也不会感到惊讶。

您能发布代码吗