(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/script/mk/system/HttpSystem.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; cc._RF.push(module, 'fe015tjuNVJ1rKouaAn8VvC', 'HttpSystem'); // script/mk/system/HttpSystem.ts "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); /** * @description http请求管理类 * @author 邹勇 */ var HttpSystem = /** @class */ (function () { function HttpSystem() { } /** * 游戏接口,通用 * @param url 接口完整地址 * @param data 加密前数据 * @param async 是否异步请求(后端要求防阻塞) */ HttpSystem.prototype.sendData = function (url, data, async) { if (async === void 0) { async = true; } return __awaiter(this, void 0, void 0, function () { var encode, dataN, result; return __generator(this, function (_a) { switch (_a.label) { case 0: encode = ''; dataN = null; data.timestamp = Math.floor(new Date().getTime() / 1000); data.appVersion = g.appData.appVersion; data.tfChannel = g.appData.tfChannel; data.versioncfg = g.appData.version; encode = mk.encrypt.encrypt(JSON.stringify(data), g.loginData.sessionKey, g.appData.appId); dataN = { "uin": g.loginData.uin, "encrypt": encode }; return [4 /*yield*/, this.sendRequest(url, 'POST', JSON.stringify(dataN), false, async)]; case 1: result = _a.sent(); return [2 /*return*/, this.checkData(result)]; } }); }); }; /** * http请求 登录用 * @param url 请求头 * @param method 'GET' || 'POST' * @param data 数据 * @param isRsa 是否加密 * @param async 是否异步请求 */ HttpSystem.prototype.sendRequest = function (url, method, data, isRsa, async) { if (method === void 0) { method = 'POST'; } if (data === void 0) { data = null; } if (isRsa === void 0) { isRsa = true; } if (async === void 0) { async = true; } url = g.httpData.getServerUrl() + url; return new Promise(function (resolve, reject) { var requesttimes = 0; var httpRequest = new XMLHttpRequest(); var send = function () { httpRequest.open(method, url, async); httpRequest.setRequestHeader("Content-Type", 'application/json;charset=UTF-8'); if (isRsa && data != null) { data = mk.encrypt.rsaEncrypt(data); } httpRequest.send(data); }; // httpRequest.timeout = 30000; httpRequest.onreadystatechange = function () { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { var responseStr = httpRequest.responseText; var response = JSON.parse(responseStr); mk.console.log('httpResponse', url, response); resolve(response); } else { mk.console.error("httpRequest.status", httpRequest.status); reject({ errcode: 1, errmsg: "status..." + httpRequest.status }); } } }; httpRequest.ontimeout = function (e) { requesttimes++; if (requesttimes >= 3) { mk.console.error("http.ontimeout", url); reject({ errcode: 1, errmsg: "ontimeout" }); } else { send(); } }; httpRequest.onerror = function (e) { mk.console.error("http.onerror", url); reject({ errcode: 1, errmsg: "onerror" }); }; send(); }); }; /** * 检测用明文还是密文 * @param response 返回消息 * @param forceData true 明文 false 有密文优先密文,没密文情况下用明文 */ HttpSystem.prototype.checkData = function (response, forceData) { if (forceData === void 0) { forceData = false; } var data = null; if (forceData) { data = response.data; } else { if (response.encrypt) { data = mk.encrypt.decrypt(response.encrypt, g.loginData.sessionKey, g.appData.appId); data = JSON.parse(data); } else if (response.data) { data = response.data; } } response.data = data; return response; }; return HttpSystem; }()); exports.default = HttpSystem; cc._RF.pop(); } if (nodeEnv) { __define(__module.exports, __require, __module); } else { __quick_compile_project__.registerModuleFunc(__filename, function () { __define(__module.exports, __require, __module); }); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxta1xcc3lzdGVtXFxIdHRwU3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHO0FBQ0g7SUFDSTtJQUNBLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNVLDZCQUFRLEdBQXJCLFVBQXNCLEdBQUcsRUFBRSxJQUFTLEVBQUUsS0FBWTtRQUFaLHNCQUFBLEVBQUEsWUFBWTs7Ozs7O3dCQUMxQyxNQUFNLEdBQUcsRUFBRSxDQUFDO3dCQUNaLEtBQUssR0FBRyxJQUFJLENBQUM7d0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO3dCQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO3dCQUNwQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzRixLQUFLLEdBQUc7NEJBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRzs0QkFDdEIsU0FBUyxFQUFFLE1BQU07eUJBQ3BCLENBQUE7d0JBQ1kscUJBQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FB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LENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw4QkFBUyxHQUFULFVBQVUsUUFBUSxFQUFFLFNBQWlCO1FBQWpCLDBCQUFBLEVBQUEsaUJBQWlCO1FBQ2pDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNmLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDeEI7YUFDSTtZQUNELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDM0I7aUJBQ0ksSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNwQixJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQzthQUN4QjtTQUNKO1FBQ0QsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDckIsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0F4R0EsQUF3R0MsSUFBQSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gaHR0cOivt+axgueuoeeQhuexu1xyXG4gKiBAYXV0aG9yIOmCueWLh1xyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFN5c3RlbSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOa4uOaIj+aOpeWPo++8jOmAmueUqFxyXG4gICAgICogQHBhcmFtIHVybCDmjqXlj6PlrozmlbTlnLDlnYBcclxuICAgICAqIEBwYXJhbSBkYXRhIOWKoOWvhuWJjeaVsOaNrlxyXG4gICAgICogQHBhcmFtIGFzeW5jIOaYr+WQpuW8guatpeivt+axgu+8iOWQjuerr+imgeaxgumYsumYu+Whnu+8iVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VuZERhdGEodXJsLCBkYXRhOiBhbnksIGFzeW5jID0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBlbmNvZGUgPSAnJztcclxuICAgICAgICBsZXQgZGF0YU4gPSBudWxsO1xyXG4gICAgICAgIGRhdGEudGltZXN0YW1wID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xyXG4gICAgICAgIGRhdGEuYXBwVmVyc2lvbiA9IGcuYXBwRGF0YS5hcHBWZXJzaW9uO1xyXG4gICAgICAgIGRhdGEudGZDaGFubmVsID0gZy5hcHBEYXRhLnRmQ2hhbm5lbDtcclxuICAgICAgICBkYXRhLnZlcnNpb25jZmcgPSBnLmFwcERhdGEudmVyc2lvbjtcclxuICAgICAgICBlbmNvZGUgPSBtay5lbmNyeXB0LmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSksIGcubG9naW5EYXRhLnNlc3Npb25LZXksIGcuYXBwRGF0YS5hcHBJZCk7XHJcbiAgICAgICAgZGF0YU4gPSB7XHJcbiAgICAgICAgICAgIFwidWluXCI6IGcubG9naW5EYXRhLnVpbixcclxuICAgICAgICAgICAgXCJlbmNyeXB0XCI6IGVuY29kZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZW5kUmVxdWVzdCh1cmwsICdQT1NUJywgSlNPTi5zdHJpbmdpZnkoZGF0YU4pLCBmYWxzZSwgYXN5bmMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRGF0YShyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaHR0cOivt+axgiDnmbvlvZXnlKhcclxuICAgICAqIEBwYXJhbSB1cmwg6K+35rGC5aS0XHJcbiAgICAgKiBAcGFyYW0gbWV0aG9kICdHRVQnIHx8ICdQT1NUJyBcclxuICAgICAqIEBwYXJhbSBkYXRhIOaVsOaNrlxyXG4gICAgICogQHBhcmFtIGlzUnNhIOaYr+WQpuWKoOWvhlxyXG4gICAgICogQHBhcmFtIGFzeW5jIOaYr+WQpuW8guatpeivt+axglxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VuZFJlcXVlc3QodXJsLCBtZXRob2Q6IHN0cmluZyA9ICdQT1NUJywgZGF0YTogc3RyaW5nID0gbnVsbCwgaXNSc2E6IGJvb2xlYW4gPSB0cnVlLCBhc3luYyA9IHRydWUpIHtcclxuICAgICAgICB1cmwgPSBnLmh0dHBEYXRhLmdldFNlcnZlclVybCgpICsgdXJsO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IHJlcXVlc3R0aW1lcyA9IDA7XHJcbiAgICAgICAgICAgIGxldCBodHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gICAgICAgICAgICBsZXQgc2VuZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGh0dHBSZXF1ZXN0Lm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcclxuICAgICAgICAgICAgICAgIGh0dHBSZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzUnNhICYmIGRhdGEgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBtay5lbmNyeXB0LnJzYUVuY3J5cHQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBodHRwUmVxdWVzdC5zZW5kKGRhdGEpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgLy8gaHR0cFJlcXVlc3QudGltZW91dCA9IDMwMDAwO1xyXG4gICAgICAgICAgICBodHRwUmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaHR0cFJlcXVlc3QucmVhZHlTdGF0ZSA9PT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChodHRwUmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VTdHIgPSBodHRwUmVxdWVzdC5yZXNwb25zZVRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtay5jb25zb2xlLmxvZygnaHR0cFJlc3BvbnNlJywgdXJsLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWsuY29uc29sZS5lcnJvcihcImh0dHBSZXF1ZXN0LnN0YXR1c1wiLCBodHRwUmVxdWVzdC5zdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoeyBlcnJjb2RlOiAxLCBlcnJtc2c6IFwic3RhdHVzLi4uXCIgKyBodHRwUmVxdWVzdC5zdGF0dXMgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBodHRwUmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmVxdWVzdHRpbWVzKys7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdHRpbWVzID49IDMpIHtcclxuICAgICAgICAgICAgICAgICAgICBtay5jb25zb2xlLmVycm9yKFwiaHR0cC5vbnRpbWVvdXRcIiwgdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoeyBlcnJjb2RlOiAxLCBlcnJtc2c6IFwib250aW1lb3V0XCIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzZW5kKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGh0dHBSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgbWsuY29uc29sZS5lcnJvcihcImh0dHAub25lcnJvclwiLCB1cmwpO1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgZXJyY29kZTogMSwgZXJybXNnOiBcIm9uZXJyb3JcIiB9KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgc2VuZCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBcclxuICAgICAqIOajgOa1i+eUqOaYjuaWh+i/mOaYr+WvhuaWh1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIOi/lOWbnua2iOaBr1xyXG4gICAgICogQHBhcmFtIGZvcmNlRGF0YSB0cnVlIOaYjuaWhyAgZmFsc2Ug5pyJ5a+G5paH5LyY5YWI5a+G5paH77yM5rKh5a+G5paH5oOF5Ya15LiL55So5piO5paHXHJcbiAgICAgKi9cclxuICAgIGNoZWNrRGF0YShyZXNwb25zZSwgZm9yY2VEYXRhID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IG51bGxcclxuICAgICAgICBpZiAoZm9yY2VEYXRhKSB7XHJcbiAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmVuY3J5cHQpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBtay5lbmNyeXB0LmRlY3J5cHQocmVzcG9uc2UuZW5jcnlwdCwgZy5sb2dpbkRhdGEuc2Vzc2lvbktleSwgZy5hcHBEYXRhLmFwcElkKTtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3BvbnNlLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgIH1cclxufVxyXG4iXX0=