Adobe Flex 4.6 WebService请求超时

时间:2012-05-15 10:32:25

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

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

_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

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,requestTimeout无效。

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

import flash.net.URLRequestDefaults;

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

请点击此处了解更多详情:Flex HTTPService times out anyway

答案 1 :(得分:0)

虽然似乎假设requestTimeout不起作用。它确实......第一次。

在第一个请求之后,requestTimeout在

中设置
HTTPService.channelSet.currentChannel.requestTimeout

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

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

private static var _directChannelSet:ChannelSet;

_directChannelSet仅实例化一次,其上的requestTimeout仅在创建时设置,因此即使您在HTTPService上更改requestTimeout,它也不会反映在请求中。