【问题标题】:Adobe Flex 4.6 WebService request timeoutAdobe Flex 4.6 WebService 请求超时
【发布时间】:2012-05-15 10:32:25
【问题描述】:

连接到我的 WebService(Lotus Notes 数据库)的代码是由 Flash Builder 通过“数据/与 WebService 连接...”创建的。一切正常,但我有一个增加请求超时的问题。 API 说您可以像这样设置请求超时:

_serviceControl.requestTimeout = 300;

在 iOS (iPad) 上似乎一切正常。但是如果我在桌面或安卓智能手机上运行我的应用程序,这只有在我将请求超时设置为低于 ~30 秒时才有效。如果我没有设置请求超时或高于 30 并且我的应用需要超过 30 秒来等待答案/结果,则“_serviceControl”会触发带有以下消息的 FaultEvent:

body = ""  
clientId = "DirectHTTPChannel0"  
correlationId = "CDED773E-34E5-56F8-D521-4FFC393D7565"  
destination = ""  
extendedData = (null)  
faultCode = "Server.Error.Request"  
faultDetail = "Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: "http://...?OpenWebService" errorID=2032]. URL: "http://...?OpenWebService"  
faultString = "HTTP request error"  
headers = (Object)#1  
DSStatusCode = 0  
messageId = "91D11378-49D4-EDF7-CE7A-4FFCB09EBC47"  
rootCause = (flash.events::IOErrorEvent)#2  
bubbles = false  
cancelable = false  
currentTarget = (flash.net::URLLoader)#3  
bytesLoaded = 0  
bytesTotal = 0  
data = ""  
dataFormat = "text"  
errorID = 2032  
eventPhase = 2  
target = (flash.net::URLLoader)#3  
text = "Error #2032: Stream Error. URL: "http://...?OpenWebService"  
type = "ioError"  
timestamp = 0  
timeToLive = 0

知道为什么会这样吗?

【问题讨论】:

  • 我无法在生产系统上重现此问题。所以我认为原因是我的开发环境。

标签: web-services actionscript-3 apache-flex timeout flex4.6


【解决方案1】:

我遇到了同样的问题,requestTimeout 不起作用。

如果有人正在寻找答案,这个配置对我来说很好:

import flash.net.URLRequestDefaults;

URLRequestDefaults.idleTimeout = 120000; //note this value represents milliseconds (120 secs)

查看这里了解更多详情:Flex HTTPService times out anyway

【讨论】:

  • 欢迎来到 Stack Overflow!除了指向其他 Stack Overflow 问题的链接之外,您能否简要描述实际答案?
【解决方案2】:

虽然似乎认为 requestTimeout 不起作用。它实际上是......第一次。

第一次请求后,requestTimeout 设置在

HTTPService.channelSet.currentChannel.requestTimeout

如果你必须改变超时,你会想在那里做。

要查看具体的违规代码,请参阅 AbstractOperation.getDirectChannelSet()。即使对于不同的 HTTPService 实例,它也来自:

private static var _directChannelSet:ChannelSet;

_directChannelSet只实例化一次,它上面的requestTimeout只在创建时设置,所以即使你改变HTTPService上的requestTimeout,它也不会反映在请求中。

【讨论】:

    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多