2012-05-15 51 views
0

连接到我的WebService(Lotus Notes数据库)的代码由Flash Builder通过“Data/Connect with WebService ...”创建。所有工作正常,但我有一个问题,以增加请求超时。该API说,你可以像这样设置请求超时:Adob​​e Flex 4.6 WebService请求超时

_serviceControl.requestTimeout = 300; 

在iOS(iPad)上,它似乎是工作一切正常。但是,如果我在桌面或Android智能手机上运行我的应用程序,只有在设置请求超时低于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 

知道为什么有时候是这样的?

+0

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

回答

2

我有同样的问题,requestTimeout不起作用。

如果有人正在寻找一个答案,这个配置对于​​我来说工作得很好:

import flash.net.URLRequestDefaults; 

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

看看这里的更多详细信息:Flex HTTPService times out anyway

+1

欢迎来到Stack Overflow!除了指向其他堆栈溢出问题的链接之外,您能否简要描述实际的答案? –

+0

你是最好的人! – Dave

0

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

第一请求后,将requestTimeout在

HTTPService.channelSet.currentChannel.requestTimeout 

设置如果必须更改超时,你会想要做它。

要查看特定的违规代码,请参阅AbstractOperation.getDirectChannelSet()。即使的HTTPService不同的情况下,就会从:

private static var _directChannelSet:ChannelSet; 

_directChannelSet只实例化一次,并在其上的requestTimeout只设在创作,所以即使你改变的HTTPService的将requestTimeout,它不会反映在请求中。