Flash和HTTP状态码207

时间:2011-04-05 19:38:21

标签: flash actionscript

让Flash识别有效的HTTP响应代码时遇到一些麻烦(207)。奇怪的是,到目前为止,这似乎只发生在FireFox中..在Chrome中运行良好。

以下是产生以下错误的代码。它似乎在FlashBug中返回HTTP状态为0 ..在Chrome中必须以不同方式处理?有没有办法继续得到回复机构?

在207状态下,我所做的任何事情似乎都无法让我得到回应。 :(

    // Initiate a call to a Patron URL
    private function callPatron( url:String, callback:Function ) {
        trace("Calling Patron");
        _loader.addEventListener( Event.COMPLETE, function(e:Event) { callback( parseResponse(e) ) });
        _loader.addEventListener( IOErrorEvent.IO_ERROR, gotError );
        _loader.addEventListener( "httpResponseStatus", onStatus );
        _loader.addEventListener( ProgressEvent.PROGRESS, progressHandler );
        _loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, onStatus );          
        _loader.load( new URLRequest( url ) );
    }

    private function progressHandler(event:ProgressEvent) {
        trace("Progresso");
    }

    private function onStatus(event:HTTPStatusEvent) {
        trace('Got HTTP status: ' + event.status );
        trace( event.toString() );
    }

    private function gotError(event:IOErrorEvent) {
        trace( 'IOError: ' + event.text );
        var loader:URLLoader = URLLoader( event.target );
        trace( loader.content );
        trace( 'WORD.' );
    }

    // Decode a Patron response event and return the parsed object
    public function parseResponse(event:Event):Object {
        trace("Got a Patron response");
        var loader:URLLoader = URLLoader( event.target );
        return JSON.decode( loader.data );
    }

..和输出:

Initializing
Calling Patron
Got HTTP status: 0
[HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0 responseURL=null]
IOError: Error #2032: Stream Error. URL: http://www.zappos.com/api/Product?key=5f25a02d8015e05ba3874e0b45be0379fe8b3c21&styleId=["1377484","1312254","269758","1519409","1325534","1152368"]&includes=["description","productRating","styles","thumbnailImageUrl"]
WORD.

1 个答案:

答案 0 :(得分:3)

不幸的是,在所有浏览器中,您都无法在Flash中获得完整的HTTP响应代码集。 Flash Player没有自己的HTTP处理(当作为浏览器插件运行时),而是使用托管浏览器进行HTTP调用。在浏览器和插件之间的某处,有些响应代码和标题的信息会减少。

Arc90(可读性背后​​的公司)的这篇文章讨论了这个问题,它有点过时了,他们的解决方案并不适用于所有情况,正如我所理解的那样,但它可能会对问题有所了解:{{ 3}}