Http.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. var t = require;
  2. var e = module;
  3. var i = exports;
  4. var a =
  5. (this && this.__awaiter) ||
  6. function (t, n, r, l) {
  7. return new (r = r || Promise)(function (i, e) {
  8. function s(t) {
  9. try {
  10. a(l.next(t));
  11. } catch (t) {
  12. e(t);
  13. }
  14. }
  15. function o(t) {
  16. try {
  17. a(l.throw(t));
  18. } catch (t) {
  19. e(t);
  20. }
  21. }
  22. function a(t) {
  23. var e;
  24. t.done
  25. ? i(t.value)
  26. : ((e = t.value) instanceof r
  27. ? e
  28. : new r(function (t) {
  29. t(e);
  30. })
  31. ).then(s, o);
  32. }
  33. a((l = l.apply(t, n || [])).next());
  34. });
  35. };
  36. Object.defineProperty(i, "__esModule", {value: !0}),
  37. (i.Http = void 0),
  38. (i.Http = class {
  39. constructor() {
  40. this.httpCache = {};
  41. }
  42. sleep(e, t) {
  43. return new Promise(t => {
  44. setTimeout(t, e);
  45. });
  46. }
  47. getRequestUrlTail(t) {
  48. const e = [];
  49. for (var i in t) {
  50. var s = t[i];
  51. e.push(i + "=" + encodeURIComponent(s) + "&");
  52. }
  53. e.sort();
  54. let o = e.join("");
  55. return o.substring(0, o.length - 1);
  56. }
  57. requestWithTokenAndCacheAsync(t, e, i, s = 0, o = !1, a = "GET", n, r = 1e4) {
  58. var l = this.httpCache[t];
  59. if (!o && l && Date.now() < l.reqTime + s) return l.data;
  60. r = this.requestWithTokenAsync(t, e, i, a, n, r);
  61. return s && (this.httpCache[t] = {reqTime: Date.now(), data: r}), r;
  62. }
  63. post(t, e, i = 0, s = 1e3, o = 1e4) {
  64. return a(this, void 0, void 0, function* () {
  65. do {
  66. try {
  67. return yield this.requestAsync(t, e, "POST", o);
  68. } catch (t) {
  69. cc.error(t);
  70. }
  71. } while ((s && (yield this.sleep(s)), i--));
  72. return null;
  73. });
  74. }
  75. requestAsync(a, n, r = "POST", l = 1e4, h) {
  76. return new Promise((i, s) => {
  77. var o = new XMLHttpRequest();
  78. (o.timeout = l),
  79. (o.onerror = o.ontimeout =
  80. () => {
  81. s("请求超时"), (s = null);
  82. }),
  83. (o.onreadystatechange = function () {
  84. var t, e;
  85. 4 == o.readyState &&
  86. ((t = 400 <= o.status || 0 == o.status), (e = o.responseText), t ? s() : i(e));
  87. });
  88. var t = this.getRequestUrlTail(n);
  89. if (h) for (var e in h) o.setRequestHeader(e, h[e]);
  90. "POST" === r
  91. ? (o.open(r, a, !0),
  92. o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
  93. o.send(t))
  94. : "POST_JSON" === r
  95. ? (o.open("POST", a, !0),
  96. o.setRequestHeader("Content-Type", "application/json"),
  97. o.send(JSON.stringify(n)))
  98. : (o.open(r, t ? a + "?" + t : a, !0),
  99. o.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
  100. o.send());
  101. });
  102. }
  103. requestWithTokenAsync(s, o, a, n = "POST", r, l = 1e4) {
  104. return new Promise(e => {
  105. var t,
  106. i = new XMLHttpRequest();
  107. (i.timeout = l),
  108. (i.onerror = t => {
  109. cc.error(t), e();
  110. }),
  111. (i.ontimeout = () => {
  112. Log.trace("请求超时!"), e();
  113. }),
  114. (i.onreadystatechange = function () {
  115. var t;
  116. 4 == i.readyState &&
  117. ((t = 400 <= i.status || 0 == i.status)
  118. ? (cc.error("请求错误", t), e())
  119. : ((t = r ? i.response : i.responseText), e(t)));
  120. }),
  121. r && (i.responseType = r),
  122. "POST" === n
  123. ? (i.open(n, s, !0),
  124. i.setRequestHeader("Access-Token", a),
  125. o instanceof Uint8Array
  126. ? (i.setRequestHeader("Content-Type", "application/octet-stream"), i.send(o.buffer))
  127. : (i.setRequestHeader("Content-Type", "application/json"), i.send(JSON.stringify(o))))
  128. : (i.open(n, s, !0),
  129. (t = this.getRequestUrlTail(o)),
  130. i.open(n, t ? s + "?" + t : s, !0),
  131. i.setRequestHeader("Access-Token", a),
  132. i.send());
  133. });
  134. }
  135. });