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;
},