Egret Http请求封装类

关注微信公众号:每日玩机 获取ios、Android、tv、mac黑科技软件

在这里插入图片描述
新建一个ts文件
在这里插入图片描述

module Http {
    export function Post(uri: string, params: Object = {}, successCallBack: Function, needToken = true) {
        var request = new egret.HttpRequest();
        request.responseType = egret.HttpResponseType.TEXT;
        //设置为 POST 请求
        request.open(Config.BASE_URL + uri, egret.HttpMethod.POST);  //Config.BASE_URL换成自己的服务器地址
        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        if (needToken) {
            request.setRequestHeader("token", Config.token);
        }
        // 调用querify处理并绑定传送到服务器的数据
        let str = querify(params);
        request.send(str);
        request.addEventListener(egret.Event.COMPLETE, (event: egret.Event) => {
            var request = <egret.HttpRequest>event.currentTarget;
            let result = JSON.parse(request.response);
            successCallBack(result);
        }, this);
    }

    export function Get(uri: string, successCallBack: Function, needToken = true) {
        var request = new egret.HttpRequest();
        request.responseType = egret.HttpResponseType.TEXT;
        //设置为 GET 请求
        request.open(Config.BASE_URL + uri, egret.HttpMethod.GET);  //Config.BASE_URL换成自己的服务器地址
        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        if (needToken) {
            request.setRequestHeader("token", Config.token);
        }
        request.send();
        request.addEventListener(egret.Event.COMPLETE, (event: egret.Event) => {
            var request = <egret.HttpRequest>event.currentTarget;
            let result = JSON.parse(request.response);
            successCallBack(result);
        }, this);
    }

    //数据处理
    function querify(object = {}) {
        const keys = Object.keys(object);
        const result = keys.reduce((prev, current) => {
            prev += `&${current}=${object[current]}`;
            return prev;
        }, '').slice(1);
        return result;
    }
}

具体使用方法如下:

Http.Post("user/login", {
			//需要传输的数据,如下
           // open_id: openid,
        }, (res) => {
         	console.log(res)
        }, false);


Http.Get("user/index", (res) => {
         	console.log(res)
        }, false);

如果是微信小程序请求的话,需在微信公众平台去配置请求地址,方法如下:具体官方文档
在这里插入图片描述

如果是发布Android项目 ,可能会遇到请求成功,但是数据仍是请求之前的数据,这是因为egret的http有缓存。
解决办法:
修改文件中的这句
request.open(Config.BASE_URL + uri, egret.HttpMethod.POST); //Config.BASE_URL换成自己的服务器地址

request.open(Config.BASE_URL + uri +"?time=" + Utils.getTimeNum(), egret.HttpMethod.POST);
Get请求同上
意思大概就是在后面拼接一个时间戳,避免从缓存里面去拿数据,保证每次都是去拿最新的数据

获取时间戳方法如下:

export function getTimeNum() {
		let now = new Date();
		let time = Date.parse(new Date().toString())
		return time;
	}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值