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)  +  "%");
  }
}

