cocos creator 的http请求 记

关于cocos的http请求,官网给的只有get方式。后来自己因为需要,要加一个post,各种尝试都不行,服务端一直接收不到信息。
今天这里做个备忘。
不多说,直接上代码:

/**
 * 新版接口
 * @example 使用 var Http = require('Http')
 * @example      new Http().Get(url, cb)//url链接 回调函数
 * @example      new Http().Post(url, param, cb)//url链接 param参数(json对象) 回调函数
 */
class CusHttp {
    constructor () {
        this._http
        this._callback
        this._event = CusEvent.getInstance()
    }
    /**
     * Get 请求
     * @param {*} Url 
     * @param {*} cb 
     */
    Get (Url, cb) {
        Com.info(Url)
        let http = cc.loader.getXMLHttpRequest();
        http.open("GET", Url, true)
        http.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
        this._callback = cb;
        http.onreadystatechange = this._result.bind(this)
        http.timeout = 10000
        http.send()
        this._http = http
    }
    Post (Url, data, cb) {
        Com.info(Url)
        data = JSON.stringify(data)//以前不懂要怎么传,是缺少这一步
        let http = cc.loader.getXMLHttpRequest();
        http.open("POST", Url, true)
        http.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
        this._callback = cb;
        http.onreadystatechange = this._result.bind(this)
        http.timeout = 10000//超时10秒
        http.send(data)
        this._http = http
    }
    _result () {
        if (this._http.readyState == 4 && this._http.status != 500) {
            let data = Global.StrToJSON(this._http.responseText).data
            Com.info('httpCall->', this._http.responseText)
            if (this._callback) {
                //如果服务端有回执text字段,则显示飘字
            }
        } else {
            Com.error('请求失败')
        }
    }
}
module.exports = CusHttp

我的服务端是用nodejs 的express写的。

router.post('/xxx', function (req, res, next) {
    req.on('data', function (data) {//需要用这样的方式来接收数据,这个是后来百度到的,其他的方式,我也还不清楚有没有
        var param = JSON.parse(data.toString())
        var content = param.content
        var device = param.device
        var time = Date.parse(new Date())
    })
});

 这套本人亲测,是行得通的。

 更多干货,可以到本人的小博客 it菜鸟

qq群:331260613,一起分享经验交流

 

Cocos Creator中提供了一个名为cc.loader的模块,它可以用于进行http请求。 使用cc.loader进行http请求的基本步骤如下: 1. 引入cc.loader模块 ``` var loader = require('cc.loader'); ``` 2. 发送http请求 ``` loader.load(url, function (err, data) { if (err) { cc.error(err); return; } // 处理返回的数据 }); ``` 在上面的代码中,url表示要请求的地址。第二个参数是一个回调函数,当请求成功时会调用这个函数,并将返回的数据作为参数传入。 3. 发送带参数的http请求 如果需要发送带参数的http请求,可以使用cc.loader中的loadJson方法。例如: ``` var params = { username: 'abc', password: 'xyz' }; loader.loadJson(url, params, function (err, data) { if (err) { cc.error(err); return; } // 处理返回的数据 }); ``` 在上面的代码中,params是一个对象,表示要发送的参数。loadJson方法会将这个对象转换成json格式,并将其作为请求的body发送给服务器。 4. 发送带headers的http请求 如果需要发送带headers的http请求,可以使用cc.loader中的load方法,并指定headers参数。例如: ``` var headers = { 'Authorization': 'Bearer xxxxx', 'Content-Type': 'application/json' }; loader.load(url, { headers: headers }, function (err, data) { if (err) { cc.error(err); return; } // 处理返回的数据 }); ``` 在上面的代码中,headers是一个对象,表示要发送的headers。load方法会将这些headers添加到请求中,并发送给服务器。 5. 取消http请求 如果需要取消一个正在进行的http请求,可以调用cc.loader中的release方法,并传入正在进行的请求的url。例如: ``` var xhr = loader.load(url, function (err, data) { if (err) { cc.error(err); return; } // 处理返回的数据 }); // 取消请求 loader.release(xhr.url); ``` 在上面的代码中,xhr是一个XMLHttpRequest对象,表示正在进行的http请求。release方法会停止这个请求,并释放相关资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值