cocoscreator中http请求网络接口

2019-12-19  本文已影响0人  神大人korose
cc.httpBase = {
    baseurl : "http://localhost:3998",//地址
    
    setBaseUrl:function(url){
        cc.log('oldurl:', cc.httpBase.baseurl)
        cc.httpBase.baseurl = url
        cc.log('newurl:', cc.httpBase.baseurl)
    },

    httpGets: function (url, callback) {
        url = encodeURI(encodeURI(url));
        cc.log(url);
        // cc.API.Lock = false; //按键锁
        // cc.API.addMsgLoading();  //加载缓冲界面
        var xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            cc.log("status=",xhr.status);
            if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
                var respone = xhr.responseText;
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(JSON.parse(respone));
                //console.log(url,' geterror ',xhr.statusText);
            }else if(xhr.status >= 400){
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(-2);
            }
        };
        xhr.open("GET", url, true);
        xhr.timeout = 10000;// 5 seconds for timeout
        xhr.onerror = function (e) {
            console.log(url,' geterror ',xhr.statusText);
            console.log(url,' geterror2 ',xhr.responseText);
            console.log(url,' geterror3 ',xhr.status);
            callback(-1);
        };
        xhr.send();

    },
 
    httpPost: function (url, params, callback) {
        cc.log(url);
        cc.log(params);
        // cc.API.Lock = false; //按键锁
        // cc.API.addMsgLoading();  //加载缓冲界面
        var xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            cc.log("status=",xhr.status);
            cc.log('xhr.readyState='+xhr.readyState+'  xhr.status='+xhr.status);
            if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
                var respone = xhr.responseText;
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(JSON.parse(respone));
            }else if(xhr.status >= 400){
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(-2);
            }
        };
        xhr.open("POST", url, true);
        xhr.setRequestHeader('Access-Control-Allow-Origin', '*',);
        xhr.setRequestHeader("Content-Type","application/json");
        xhr.timeout = 50000;// 5 seconds for timeout
 
        xhr.send(params);
    },
    httpUploadFile: function (url, filedata,callback) {
        cc.log("------",filedata)
        // cc.API.Lock = false; //按键锁
        // cc.API.addMsgLoading();  //加载缓冲界面
        var xhr = cc.loader.getXMLHttpRequest();
        xhr.onreadystatechange = function () {
            cc.log("status=",xhr.status);
            cc.log('xhr.readyState='+xhr.readyState+'  xhr.status='+xhr.status);
            if (xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
                var respone = xhr.responseText;
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(respone);
            }else if(xhr.status >= 400){
                // cc.API.Lock = true; //按键锁
                // cc.API.closeMsgLoading();    //撤销缓冲界面
                callback(-2);
            }
        };
        var base64String = filedata;

        //这里对base64串进行操作,去掉url头,并转换为byte
        var bytes = atob(base64String);
        var array = [];

        for(var i = 0; i < bytes.length; i++){
            array.push(bytes.charCodeAt(i));  
        }
        var blob = new Blob([new Uint8Array(array)], {type:'image/png'}); 
        var fd = new FormData();
        cc.log(blob)
        fd.append('file',blob, Date.now() + '.jpg');
        
        xhr.open("POST", url, true);
        xhr.setRequestHeader('Access-Control-Allow-Origin', '*',);
        xhr.timeout = 5000;// 5 seconds for timeout
 
        xhr.send(fd);
    }
}

调用方法

    //获取任务详细
    getTaskDetails:function (id,callback) {
        if(id){
            cc.httpBase.httpGets(cc.js.formatStr("%s/task/getTaskDetails/%s", cc.httpBase.baseurl, id), callback);
            return 0;
        }
        return 1;
    },

    //删除任务
    deleteTask:function (session, id, callback) {
        if(id && session){
            var data = {
                "id":id,
                "session": session
            }
            cc.httpBase.httpPost(cc.js.formatStr("%s/task/deleteTask", cc.httpBase.baseurl), JSON.stringify(data), callback);
            return 0;
        }
        return 1;
    },
上一篇 下一篇

猜你喜欢

热点阅读