as3 获取 http Head 请求的响应
as3 Getting Response of a http Head request
我正在尝试读取 http Head 方法请求的响应,但我没有得到任何东西,因为 head 请求的响应不包含 body,但我需要获取 ['content-length'] 这是返回的 header
这是我的代码
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);
}
我该如何解决这个问题?
EVENT.COMPLETE
只是 URLLoader 可以发出的众多事件之一。例如,它还可以发出 HTTPStatusEvent.httpResponseStatus,它拥有一个名为 responseHeaders
的 属性。试一试。
的文档提供的示例代码
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);
}
}
}
对于您的用例(获取 headers):
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);
}
}
我尚未测试此代码,但根据您的评论,此方法有效。
我正在尝试读取 http Head 方法请求的响应,但我没有得到任何东西,因为 head 请求的响应不包含 body,但我需要获取 ['content-length'] 这是返回的 header 这是我的代码
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);
}
我该如何解决这个问题?
EVENT.COMPLETE
只是 URLLoader 可以发出的众多事件之一。例如,它还可以发出 HTTPStatusEvent.httpResponseStatus,它拥有一个名为 responseHeaders
的 属性。试一试。
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);
}
}
}
对于您的用例(获取 headers):
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);
}
}
我尚未测试此代码,但根据您的评论,此方法有效。