В любом случае Flex HTTPService истекает - PullRequest
2 голосов
/ 11 января 2012

Я получаю сообщение об ошибке через 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

Я уже проверил объект события сбоя для ответа и нашел его в faultDetails Error: [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

Существует ли ограничение по времени выполнения запросов?

Редактировать: Использование requetTimeout уже.

Спасибо

Ответы [ 3 ]

9 голосов
/ 06 февраля 2012

Хорошо, в моей рабочей среде (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)

Я считаю, что это может кому-нибудь помочь.

1 голос
/ 23 мая 2014

Хотя, кажется, предполагается, что requestTimeout не работает.Это действительно ... первый раз.

После 1-го запроса requestTimeout устанавливается в

HTTPService.channelSet.currentChannel.requestTimeout

Если вам нужно изменить время ожидания, вы захотите сделать это там.

Чтобы увидеть конкретный нарушающий код, см. AbstractOperation.getDirectChannelSet ().Даже для разных экземпляров HTTPService он извлекает из:

private static var _directChannelSet:ChannelSet;

_directChannelSet создается только один раз, а requestTimeout для него устанавливается только при создании, поэтому даже если вы измените requestTimeout на HTTPService, он выиграетне отражено в запросе.

0 голосов
/ 03 февраля 2012

Вы можете установить время запроса для объектов службы http, это будет делать то, что написано на банке, но если вы хотите узнать больше, вот ссылка на справочник по языку:

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>

Также стоит иметь в виду, если вы установите этот атрибут на ноль или меньшевремя запроса не истекает вообще (в соответствии с языком ref).

...