egret.HttpRequest
包 egret
类 public class HttpRequest
继承 egret.HttpRequest → egret.EventDispatcher → egret.HashObject
HttpRequest 类以文本或二进制数据的形式从 URL 下载数据。HttpRequest 对象会先从 URL 中下载所有数据,然后才将数据用于应用程序中的代码。它会发出有关下载进度的通知,通过 bytesLoaded 和 bytesTotal 属性以及已调度的事件,可以监视下载进度。
公共属性
属性 |
---|
response : any 本次请求返回的数据,数据类型根据 responseType 设置的值确定 |
responseType : string 设置返回的数据格式为文本(HttpResponseType.TEXT)还是二进制数据(HttpResponseType.ArrayBuffer) |
timeout : number 代表着一个请求在被自动终止前所消耗的毫秒数 |
withCredentials : boolean 表明在进行跨站(cross-site)的访问控制(Access-Control)请求时,是否使用认证信息(例如cookie或授权的header) |
公共方法
方法 |
---|
HttpRequest() |
abort():void 如果请求已经被发送,则立刻中止请求. |
getAllResponseHeaders():string 返回所有响应头信息(响应头名和值), 如果响应头还没接受,则返回"". |
getResponseHeader(header:string):string 返回指定的响应头的值, 如果响应头还没被接受,或该响应头不存在,则返回"". |
open(url:string,method:string):void 初始化一个请求. |
send(data:any):void 发送请求. |
setRequestHeader(header:string,value:string):void 给指定的HTTP请求头赋值.在这之前,您必须确认已经调用 open() 方法打开了一个url. |
事件
Events |
---|
egret.Event.COMPLETE 加载完成 |
egret.Event.IO_ERROR 加载失败 |
egret.ProgressEvent.PROGRESS 加载进度,可通过event.bytesLoaded和event.bytesTotal统计进度信息。 |
属性详细信息
response
response : any
- 支持版本:Egret 2.4
- 运行平台:Web,Native
本次请求返回的数据,数据类型根据 responseType 设置的值确定。
responseType
responseType : string = egret.HttpResponseType.TEXT
- 支持版本:Egret 2.4
- 运行平台:Web,Native
设置返回的数据格式为文本(HttpResponseType.TEXT)还是二进制数据(HttpResponseType.ArrayBuffer)
注意:若尝试设置此属性为一个非法的值,运行时将使用HttpResponseType.TEXT。
timeout
timeout : number = egret.HttpResponseType.TEXT
- 支持版本:Egret 5.2.15
- 运行平台:Web,Native
代表着一个请求在被自动终止前所消耗的毫秒数。默认值为 0,意味着没有超时。
withCredentials
withCredentials : boolean = false
- 支持版本:Egret 2.4
- 运行平台:Web,Native
表明在进行跨站(cross-site)的访问控制(Access-Control)请求时,是否使用认证信息(例如cookie或授权的header)。(这个标志不会影响同站的请求)
方法详细信息
HttpRequest()
public HttpRequest()
- 支持版本:all
- 运行平台:Web,Native
abort()
public abort():void
如果请求已经被发送,则立刻中止请求.
- 支持版本:Egret 2.4
- 运行平台:Web,Native
getAllResponseHeaders()
public getAllResponseHeaders():string
返回所有响应头信息(响应头名和值), 如果响应头还没接受,则返回"".
- 支持版本:Egret 2.4
- 运行平台:Web,Native
getResponseHeader()
public getResponseHeader(header:string):string
返回指定的响应头的值, 如果响应头还没被接受,或该响应头不存在,则返回"".
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
- header:string - 要返回的响应头名称
open()
public open(url:string,method:string):void
初始化一个请求.
注意: 若在已经发出请求的对象上调用此方法,相当于立即调用abort().
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
send()
发送请求.
- 支持版本:Egret 2.4
- 运行平台:Web,Native
- 参数
- data:any - 需要发送的数据
setRequestHeader()
public setRequestHeader(header:string,value:string):void
给指定的HTTP请求头赋值.在这之前,您必须确认已经调用 open() 方法打开了一个url.
示例
/*
* 下面的示例使用 egret.HttpRequest 类进行网络通信。
*/
class HttpRequestExample extends egret.DisplayObjectContainer {
private statusGetLabel:egret.TextField;
private statusPostLabel:egret.TextField;
public constructor() {
super();
this.sendGetRequest();
this.sendPostRequest();
}
private sendGetRequest():void {
var statusGetLabel = new egret.TextField();
this.statusGetLabel = statusGetLabel;
statusGetLabel.size = 18;
statusGetLabel.text = "GET request being sent to httpbin.org";
this.addChild(statusGetLabel);
statusGetLabel.x = 50;
statusGetLabel.y = 40;
var request = new egret.HttpRequest();
request.responseType = egret.HttpResponseType.TEXT;
request.open("http://httpbin.org/get",egret.HttpMethod.GET);
request.send();
request.addEventListener(egret.Event.COMPLETE,this.onGetComplete,this);
request.addEventListener(egret.IOErrorEvent.IO_ERROR,this.onGetIOError,this);
request.addEventListener(egret.ProgressEvent.PROGRESS,this.onGetProgress,this);
}
private onGetComplete(event:egret.Event):void {
var request = <egret.HttpRequest>event.currentTarget;
egret.log("get data : ",request.response);
var responseLabel = new egret.TextField();
responseLabel.size = 18;
responseLabel.text = "GET response: \n" + request.response.substring(0, 50) + "...";
this.addChild(responseLabel);
responseLabel.x = 50;
responseLabel.y = 70;
this.statusGetLabel.text = "Get GET response!";
}
private onGetIOError(event:egret.IOErrorEvent):void {
egret.log("get error : " + event);
}
private onGetProgress(event:egret.ProgressEvent):void {
egret.log("get progress : " + Math.floor(100*event.bytesLoaded/event.bytesTotal) + "%");
}
private sendPostRequest() {
var statusPostLabel = new egret.TextField();
this.statusPostLabel = statusPostLabel;
this.addChild(statusPostLabel);
statusPostLabel.size = 18;
statusPostLabel.x = 300;
statusPostLabel.y = 40;
statusPostLabel.text = "Sending POST request to httpbin.org";
var request = new egret.HttpRequest();
request.responseType = egret.HttpResponseType.TEXT;
request.open("http://httpbin.org/post",egret.HttpMethod.POST);
request.send();
request.addEventListener(egret.Event.COMPLETE,this.onPostComplete,this);
request.addEventListener(egret.IOErrorEvent.IO_ERROR,this.onPostIOError,this);
request.addEventListener(egret.ProgressEvent.PROGRESS,this.onPostProgress,this);
}
private onPostComplete(event:egret.Event):void {
var request = <egret.HttpRequest>event.currentTarget;
egret.log("post data : ",request.response);
var responseLabel = new egret.TextField();
responseLabel.size = 18;
responseLabel.text = "POST response:\n" + request.response.substring(0, 50) + "...";
this.addChild(responseLabel);
responseLabel.x = 300;
responseLabel.y = 70;
this.statusPostLabel.text = "Get POST response!";
}
private onPostIOError(event:egret.IOErrorEvent):void {
egret.log("post error : " + event);
}
private onPostProgress(event:egret.ProgressEvent):void {
egret.log("post progress : " + Math.floor(100*event.bytesLoaded/event.bytesTotal) + "%");
}
}