276ee97c96ad55179e10a4c1f41a1f2548236063.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. System.register(["cc"], function (_export, _context) {
  2. "use strict";
  3. var _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, error, warn, HttpReturn, HttpRequest, _crd, urls, reqparams, HttpEvent;
  4. _export({
  5. HttpReturn: void 0,
  6. HttpRequest: void 0
  7. });
  8. return {
  9. setters: [function (_cc) {
  10. _cclegacy = _cc.cclegacy;
  11. __checkObsolete__ = _cc.__checkObsolete__;
  12. __checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
  13. error = _cc.error;
  14. warn = _cc.warn;
  15. }],
  16. execute: function () {
  17. _crd = true;
  18. _cclegacy._RF.push({}, "806e5t8UetFy4spn89dnuan", "HttpRequest", undefined);
  19. /*
  20. * @Author: dgflash
  21. * @Date: 2022-09-01 18:00:28
  22. * @LastEditors: dgflash
  23. * @LastEditTime: 2022-09-09 18:10:50
  24. */
  25. /**
  26. * 使用流程文档可参考、简化与服务器对接、使用新版API体验,可进入下面地址获取新版本,替换network目录中的内容
  27. * https://store.cocos.com/app/detail/5877
  28. */
  29. /** 当前请求地址集合 */
  30. __checkObsolete__(['error', 'warn']);
  31. urls = {};
  32. /** 请求参数 */
  33. reqparams = {};
  34. /** 请求事件 */
  35. _export("HttpEvent", HttpEvent = /*#__PURE__*/function (HttpEvent) {
  36. HttpEvent["NO_NETWORK"] = "http_request_no_network";
  37. HttpEvent["UNKNOWN_ERROR"] = "http_request_unknown_error";
  38. HttpEvent["TIMEOUT"] = "http_request_timout";
  39. return HttpEvent;
  40. }({}));
  41. /**
  42. * HTTP请求返回值
  43. */
  44. _export("HttpReturn", HttpReturn = class HttpReturn {
  45. constructor() {
  46. /** 是否请求成功 */
  47. this.isSucc = false;
  48. /** 请求返回数据 */
  49. this.res = void 0;
  50. /** 请求错误数据 */
  51. this.err = void 0;
  52. }
  53. });
  54. /** HTTP请求 */
  55. _export("HttpRequest", HttpRequest = class HttpRequest {
  56. constructor() {
  57. /** 服务器地址 */
  58. this.server = "http://127.0.0.1/";
  59. /** 请求超时时间 */
  60. this.timeout = 10000;
  61. /** 自定义请求头信息 */
  62. this.header = new Map();
  63. }
  64. /**
  65. * 添加自定义请求头信息
  66. * @param name 信息名
  67. * @param value 信息值
  68. */
  69. addHeader(name, value) {
  70. this.header.set(name, value);
  71. }
  72. /**
  73. * HTTP GET请求
  74. * @param name 协议名
  75. * @param onComplete 请求完整回调方法
  76. * @param params 查询参数
  77. * @example
  78. var param = '{"uid":12345}'
  79. var complete = (ret: HttpReturn) => {
  80. console.log(ret.res);
  81. }
  82. oops.http.getWithParams(name, complete, param);
  83. */
  84. get(name, onComplete, params) {
  85. if (params === void 0) {
  86. params = null;
  87. }
  88. this.sendRequest(name, params, false, onComplete);
  89. }
  90. /**
  91. * HTTP GET请求
  92. * @param name 协议名
  93. * @param params 查询参数
  94. * @example
  95. var txt = await oops.http.getAsync(name);
  96. if (txt.isSucc) {
  97. console.log(txt.res);
  98. }
  99. */
  100. getAsync(name, params) {
  101. if (params === void 0) {
  102. params = null;
  103. }
  104. return new Promise((resolve, reject) => {
  105. this.sendRequest(name, params, false, ret => {
  106. resolve(ret);
  107. });
  108. });
  109. }
  110. /**
  111. * HTTP GET请求非文本格式数据
  112. * @param name 协议名
  113. * @param onComplete 请求完整回调方法
  114. * @param params 查询参数
  115. */
  116. getByArraybuffer(name, onComplete, params) {
  117. if (params === void 0) {
  118. params = null;
  119. }
  120. this.sendRequest(name, params, false, onComplete, 'arraybuffer', false);
  121. }
  122. /**
  123. * HTTP GET请求非文本格式数据
  124. * @param name 协议名
  125. * @param params 查询参数
  126. * @returns Promise<any>
  127. */
  128. getAsyncByArraybuffer(name, params) {
  129. if (params === void 0) {
  130. params = null;
  131. }
  132. return new Promise((resolve, reject) => {
  133. this.sendRequest(name, params, false, ret => {
  134. resolve(ret);
  135. }, 'arraybuffer', false);
  136. });
  137. }
  138. /**
  139. * HTTP POST请求
  140. * @param name 协议名
  141. * @param params 查询参数
  142. * @param onComplete 请求完整回调方法
  143. * @example
  144. var param = '{"LoginCode":"donggang_dev","Password":"e10adc3949ba59abbe56e057f20f883e"}'
  145. var complete = (ret: HttpReturn) => {
  146. console.log(ret.res);
  147. }
  148. oops.http.post(name, complete, param);
  149. */
  150. post(name, onComplete, params) {
  151. if (params === void 0) {
  152. params = null;
  153. }
  154. this.sendRequest(name, params, true, onComplete);
  155. }
  156. /**
  157. * HTTP POST请求
  158. * @param name 协议名
  159. * @param params 查询参数
  160. */
  161. postAsync(name, params) {
  162. if (params === void 0) {
  163. params = null;
  164. }
  165. return new Promise((resolve, reject) => {
  166. this.sendRequest(name, params, true, ret => {
  167. resolve(ret);
  168. });
  169. });
  170. }
  171. /**
  172. * 取消请求中的请求
  173. * @param name 协议名
  174. */
  175. abort(name) {
  176. var xhr = urls[this.server + name];
  177. if (xhr) {
  178. xhr.abort();
  179. }
  180. }
  181. /**
  182. * 获得字符串形式的参数
  183. * @param params 参数对象
  184. * @returns 参数字符串
  185. */
  186. getParamString(params) {
  187. var result = "";
  188. for (var name in params) {
  189. var data = params[name];
  190. if (data instanceof Object) {
  191. for (var key in data) result += key + "=" + data[key] + "&";
  192. } else {
  193. result += name + "=" + data + "&";
  194. }
  195. }
  196. return result.substring(0, result.length - 1);
  197. }
  198. /**
  199. * Http请求
  200. * @param name(string) 请求地址
  201. * @param params(JSON) 请求参数
  202. * @param isPost(boolen) 是否为POST方式
  203. * @param callback(function) 请求成功回调
  204. * @param responseType(string) 响应类型
  205. * @param isOpenTimeout(boolean) 是否触发请求超时错误
  206. */
  207. sendRequest(name, params, isPost, onComplete, responseType, isOpenTimeout) {
  208. if (isOpenTimeout === void 0) {
  209. isOpenTimeout = true;
  210. }
  211. if (name == null || name == '') {
  212. error("请求地址不能为空");
  213. return;
  214. }
  215. var url,
  216. newUrl,
  217. paramsStr = "";
  218. if (name.toLocaleLowerCase().indexOf("http") == 0) {
  219. url = name;
  220. } else {
  221. url = this.server + name;
  222. }
  223. if (params) {
  224. paramsStr = this.getParamString(params);
  225. if (url.indexOf("?") > -1) newUrl = url + "&" + paramsStr;else newUrl = url + "?" + paramsStr;
  226. } else {
  227. newUrl = url;
  228. }
  229. if (urls[newUrl] != null && reqparams[newUrl] == paramsStr) {
  230. warn("\u5730\u5740\u3010" + url + "\u3011\u5DF2\u6B63\u5728\u8BF7\u6C42\u4E2D\uFF0C\u4E0D\u80FD\u91CD\u590D\u8BF7\u6C42");
  231. return;
  232. }
  233. var xhr = new XMLHttpRequest(); // 防重复请求功能
  234. urls[newUrl] = xhr;
  235. reqparams[newUrl] = paramsStr;
  236. if (isPost) {
  237. xhr.open("POST", url);
  238. } else {
  239. xhr.open("GET", newUrl);
  240. } // 添加自定义请求头信息
  241. for (var [key, value] of this.header) {
  242. xhr.setRequestHeader(key, value);
  243. } // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
  244. // xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
  245. var data = {};
  246. data.url = url;
  247. data.params = params; // 请求超时
  248. if (isOpenTimeout) {
  249. xhr.timeout = this.timeout;
  250. xhr.ontimeout = () => {
  251. this.deleteCache(newUrl);
  252. ret.isSucc = false;
  253. ret.err = HttpEvent.TIMEOUT; // 超时
  254. onComplete(data);
  255. };
  256. } // 响应结果
  257. var ret = new HttpReturn();
  258. xhr.onloadend = () => {
  259. if (xhr.status == 500) {
  260. this.deleteCache(newUrl);
  261. ret.isSucc = false;
  262. ret.err = HttpEvent.NO_NETWORK; // 断网
  263. onComplete(ret);
  264. }
  265. };
  266. xhr.onerror = () => {
  267. this.deleteCache(newUrl);
  268. ret.isSucc = false;
  269. if (xhr.readyState == 0 || xhr.readyState == 1 || xhr.status == 0) {
  270. ret.err = HttpEvent.NO_NETWORK; // 断网
  271. } else {
  272. ret.err = HttpEvent.UNKNOWN_ERROR; // 未知错误
  273. }
  274. onComplete(ret);
  275. };
  276. xhr.onreadystatechange = () => {
  277. if (xhr.readyState != 4) return;
  278. this.deleteCache(newUrl);
  279. if (xhr.status == 200 && onComplete) {
  280. ret.isSucc = true;
  281. if (responseType == 'arraybuffer') {
  282. xhr.responseType = responseType; // 加载非文本格式
  283. ret.res = xhr.response;
  284. } else {
  285. ret.res = JSON.parse(xhr.response);
  286. }
  287. onComplete(ret);
  288. }
  289. }; // 发送请求
  290. if (params == null || params == "") {
  291. xhr.send();
  292. } else {
  293. xhr.send(paramsStr);
  294. }
  295. }
  296. deleteCache(url) {
  297. delete urls[url];
  298. delete reqparams[url];
  299. }
  300. });
  301. _cclegacy._RF.pop();
  302. _crd = false;
  303. }
  304. };
  305. });
  306. //# sourceMappingURL=276ee97c96ad55179e10a4c1f41a1f2548236063.js.map