AIR несколько HTTPService вызов Mac OSX - PullRequest
1 голос
/ 27 сентября 2011

Я создаю и отправляю несколько экземпляров HTTPService. На Mac, однако, многие вызовы завершаются с ошибкой 2032.

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       click="windowedapplication1_clickHandler(event)"
                       creationComplete="windowedapplication1_creationCompleteHandler(event)">

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.FlexEvent;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.http.HTTPService;

            [Bindable]
            private var r:int=0;
            [Bindable]
            private var f:int=0;

            private var a:Array= ['url1', 'url2', 'url3', 'url4', 'url5'];

            private var sa:Array=[];
            protected function windowedapplication1_clickHandler(event:MouseEvent):void
            {
                for(var i:int=0; i<sa.length; i++) {
                    sa[i].send();
                }

            }

            protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
            {
                for(var i:int=0; i<100; i++) {
                    var random:int=Math.floor(Math.random() * a.length);
                    var s:HTTPService=new HTTPService();
                    s.addEventListener(ResultEvent.RESULT, sr);
                    s.addEventListener(FaultEvent.FAULT, sf);
                    s.resultFormat="text";
                    s.url=a[random];
                    sa.push(s);
                }
                //s.useProxy=true;
            }

            private function sf(e:FaultEvent):void {
                f++;
                t.text="MESSAGE: " + e.message + "HEADERS:" + e.headers + "FAULTCONTENT: " + e.fault.content 
                    + "ERROR: " + e.fault.errorID + "|" + e.fault.faultCode + "|" + e.fault.faultDetail + "|" + e.fault.faultString
                    + "FAULTMESSAGE:" + e.fault.message + "FAULRNAME:" + e.fault.name + "ROOTCAUSE:" + e.fault.rootCause
                    + "AT " + e.fault.getStackTrace();
            }

            private function sr(e:ResultEvent):void {
                r++;
            }

        ]]>
    </fx:Script>

    <fx:Declarations>

    </fx:Declarations>
    <s:Label x="10" y="19" text="Result {r}"/>
    <s:Label x="10" y="120" text="Fault {f}"/>
    <s:TextArea x="10" y="198" width="610" height="294" id="t"/>
</s:WindowedApplication>

На ПК все работает как положено (все 100 результатов отображаются какуспешно) но на Mac я получаю несколько неудачных попыток.Почему это происходит и как мне обойти это?

1 Ответ

1 голос
/ 03 октября 2011

Кажется, Win7 и Mac OS X блокируют очень быстрые запросы на разные адреса.Добавление 1-секундного таймаута работает нормально

...