as3获取http头请求的响应

时间:2018-05-02 17:22:44

标签: http actionscript-3 http-headers

我试图阅读http Head方法请求的响应,但我没有得到任何结果,因为头部请求的响应不包含一个主体,但我需要得到[& #39; content-length']这是返回的标头 这是我的代码

function GetSize() {
        var request: URLRequest = new URLRequest(url);
        request.method = URLRequestMethod.HEAD;
        var loader: URLLoader = new URLLoader();
        loader.addEventListener(Event.COMPLETE, DownloadFileSize, false, 0, true);

        loader.load(request);
    }
    function DownloadFileSize(ev: Event) {
        trace("the answer is :"+(URLLoader)(ev.currentTarget).data);
    }

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

EVENT.COMPLETE只是URLLoader可以发出的众多事件之一。例如,它还可以发出HTTPStatusEvent.httpResponseStatus,它拥有一个名为responseHeaders的属性。试一试。

以下是HttpStatusEvent

文档提供的示例代码
package {
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.HTTPStatusEvent;

public class HTTPStatusEventExample extends Sprite {

    public function HTTPStatusEventExample() {
        var loader:URLLoader = new URLLoader();
        loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);

        var request:URLRequest = new URLRequest("http://www.[yourDomain].com/MissingFile.html");
        loader.load(request);
    }

    private function httpStatusHandler(event:HTTPStatusEvent):void {
        trace("httpStatusHandler: " + event);
        trace("status: " + event.status);
    }
}

}

对于您的用例(获取标题):

private function httpStatusHandler(event:HTTPStatusEvent):void {
        for(var i:int = 0;i<event.responseHeaders.length;i++){
            trace(i.toString() + ":" + event.responseHeaders[i].name + " - " + event.responseHeaders[i].value);
        }
}

我还没有测试过这段代码,但根据你的评论,这种方法很有用。