跳到主要内容

egret.HttpRequest

   egret

   public class HttpRequest

继承    egret.HttpRequest → egret.EventDispatcheregret.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
  • 参数
    • url:string - 该请求所要访问的URL该请求所要访问的URL
    • method:string - 请求所使用的HTTP方法, 请使用 HttpMethod 定义的枚举值.

send()

public send(data:any):void

发送请求.

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • data:any - 需要发送的数据

setRequestHeader()

public setRequestHeader(header:string,value:string):void

给指定的HTTP请求头赋值.在这之前,您必须确认已经调用 open() 方法打开了一个url.

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • header:string - 将要被赋值的请求头名称.
    • value:string - 给指定的请求头赋的值.

示例

/*
* 下面的示例使用 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) + "%");
}
}