Cocos Creator JS http通信封裝
/**
* Http 請求封裝
*/
const HttpHelper = cc.Class({
? ?extends: cc.Component,
? ?statics: {
? ?},
? ?properties: {
? ?},
? ?/**
? ? * get請求
? ? * @param {string} url
? ? * @param {function} callback
? ? */
? ?httpGet(url, callback) {
? ? ? ?cc.myGame.gameUi.onShowLockScreen();
? ? ? ?let xhr = cc.loader.getXMLHttpRequest();
? ? ? ?xhr.onreadystatechange = function () {
? ? ? ? ? ?// cc.log("Get: readyState:" + xhr.readyState + " status:" + xhr.status);
? ? ? ? ? ?if (xhr.readyState === 4 && xhr.status == 200) {
? ? ? ? ? ? ? ?let respone = xhr.responseText;
? ? ? ? ? ? ? ?let rsp = JSON.parse(respone);
? ? ? ? ? ? ? ?cc.myGame.gameUi.onHideLockScreen();
? ? ? ? ? ? ? ?callback(rsp);
? ? ? ? ? ?} else if (xhr.readyState === 4 && xhr.status == 401) {
? ? ? ? ? ? ? ?cc.myGame.gameUi.onHideLockScreen();
? ? ? ? ? ? ? ?callback({status:401});
? ? ? ? ? ?} else {
? ? ? ? ? ? ? ?//callback(-1);
? ? ? ? ? ?}
? ? ? ?};
? ? ? ?xhr.withCredentials = true;
? ? ? ?xhr.open('GET', url, true);
? ? ? ?// if (cc.sys.isNative) {
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type,authorization');
? ? ? ?xhr.setRequestHeader("Content-Type", "application/json");
? ? ? ?xhr.setRequestHeader('Authorization', 'Bearer ' + cc.myGame.gameManager.getToken());
? ? ? ?// xhr.setRequestHeader('Authorization', 'Bearer ' + "");
? ? ? ?// }
? ? ? ?// note: In Internet Explorer, the timeout property may be set only after calling the open()
? ? ? ?// method and before calling the send() method.
? ? ? ?xhr.timeout = 8000;// 8 seconds for timeout
? ? ? ?xhr.send();
? ?},
? ?/**
? ? * post請求
? ? * @param {string} url
? ? * @param {object} params
? ? * @param {function} callback
? ? */
? ?httpPost(url, params, callback) {
? ? ? ?cc.myGame.gameUi.onShowLockScreen();
? ? ? ?let xhr = cc.loader.getXMLHttpRequest();
? ? ? ?xhr.onreadystatechange = function () {
? ? ? ? ? ?// cc.log('xhr.readyState=' + xhr.readyState + ' ?xhr.status=' + xhr.status);
? ? ? ? ? ?if (xhr.readyState === 4 && xhr.status == 200) {
? ? ? ? ? ? ? ?let respone = xhr.responseText;
? ? ? ? ? ? ? ?let rsp = JSON.parse(respone);
? ? ? ? ? ? ? ?cc.myGame.gameUi.onHideLockScreen();
? ? ? ? ? ? ? ?callback(rsp);
? ? ? ? ? ?} else {
? ? ? ? ? ? ? ?callback(-1);
? ? ? ? ? ?}
? ? ? ?};
? ? ? ?xhr.open('POST', url, true);
? ? ? ?// if (cc.sys.isNative) {
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type');
? ? ? ?xhr.setRequestHeader("Content-Type", "application/json");
? ? ? ?xhr.setRequestHeader('Authorization', 'Bearer ' + cc.myGame.gameManager.getToken());
? ? ? ?// }
? ? ? ?// note: In Internet Explorer, the timeout property may be set only after calling the open()
? ? ? ?// method and before calling the send() method.
? ? ? ?xhr.timeout = 8000;// 8 seconds for timeout
? ? ? ?xhr.send(JSON.stringify(params));
? ?},
? ?/**
? ? * 登錄專用
? ? * @param {string} url
? ? * @param {object} params
? ? * @param {function} callback
? ? * @param {string} account
? ? * @param {string} password
? ? */
? ?httpPostLogin(url, params, callback, account, password) {
? ? ? ?cc.myGame.gameUi.onShowLockScreen();
? ? ? ?let xhr = cc.loader.getXMLHttpRequest();
? ? ? ?xhr.onreadystatechange = function () {
? ? ? ? ? ?// cc.log('xhr.readyState=' + xhr.readyState + ' ?xhr.status=' + xhr.status);
? ? ? ? ? ?if (xhr.readyState === 4 && xhr.status == 200) {
? ? ? ? ? ? ? ?let respone = xhr.responseText;
? ? ? ? ? ? ? ?let rsp = JSON.parse(respone);
? ? ? ? ? ? ? ?cc.myGame.gameUi.onHideLockScreen();
? ? ? ? ? ? ? ?callback(rsp);
? ? ? ? ? ?} else {
? ? ? ? ? ? ? ?callback(-1);
? ? ? ? ? ?}
? ? ? ?};
? ? ? ?xhr.open('POST', url, true);
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST');
? ? ? ?xhr.setRequestHeader('Access-Control-Allow-Headers', 'x-requested-with,content-type');
? ? ? ?xhr.setRequestHeader("Content-Type", "application/json");
? ? ? ?let str = account + "@" + password;
? ? ? ?xhr.setRequestHeader('Authorization', 'Basic' + ' ' + window.btoa(str));
? ? ? ?xhr.timeout = 8000;// 8 seconds for timeout
? ? ? ?xhr.send(JSON.stringify(params));
? ?}
});
window.HttpHelper = new HttpHelper();
標(biāo)簽: