Flex HTTPService无论如何都会超时

clj7thdc  于 2022-09-21  发布在  Apache
关注(0)|答案(3)|浏览(126)

我在执行此服务30秒后收到错误

<s:HTTPService id="svcList" url="http://localhost/index.php" method="GET" result="svcList_resultHandler(event)" fault="svcList_faultHandler(event)" requestTimeout="300">
    <s:request xmlns="">
        <mod>module</mod>
        <op>operation</op>
    </s:request>
</s:HTTPService>

此操作花费的时间比平时长,所以我将php的最大执行时间更改为120秒。

当通过浏览器(即http://localhost/index.php?mod=module&op=operation)请求脚本时,该脚本正确运行

我已经检查了错误事件对象的答案,并在faultDetailsError: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://localhost/index.php" errorID=2032]. URL: http://localhost/index.php找到了答案

请求是否有执行时间限制?

编辑:已在使用requestTimeout

谢谢

kuuvgm7e

kuuvgm7e1#

好吧,在我的工作环境(Flex SDK 4.1 - AIR 2.6)中,简单地使用requestTimeout="xx"不起作用我不知道为什么。

但是设置一个非常全局的对象URLRequestDefaults属性idleTimeout可以按我的需要工作。

我的问题的解决方案是应用程序顶部的这个配置。

import flash.net.URLRequestDefaults;

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

我相信这对某些人有帮助。

pzfprimi

pzfprimi2#

尽管似乎假定请求超时不起作用。实际上是这样的。第一次。

在第一个请求之后,在

HTTPService.channelSet.currentChannel.requestTimeout

如果您必须更改超时,您将希望在那里更改。

若要查看特定的违规代码,请参阅AbstractOperation.getDirectChannelSet()。即使对于HTTPService的不同示例,它也会从:

private static var _directChannelSet:ChannelSet;

_directChannelSet只示例化一次,并且其上的questTimeout只在创建时设置,所以即使您更改HTTPService上的questTimeout,它也不会反映在请求中。

yyyllmsg

yyyllmsg3#

您可以将http服务对象的请求时间设置为超时,这将按照TIN上的说明执行操作,但如果您想了解更多信息,请访问以下语言参考链接:

Http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html#requestTimeout

下面是一个示例,说明它在超时120秒的代码片段中会是什么样子:

<s:HTTPService id="svcList" requestTimeout="120" url="http://localhost/index.php" method="GET" result="svcList_resultHandler(event)" fault="svcList_faultHandler(event)">
  <s:request xmlns="">
    <mod>module</mod>
    <op>operation</op>
  </s:request>
</s:HTTPService>

同样值得记住的是,如果您将此属性设置为零或更小,请求将根本不会超时(根据语言引用)。

相关问题