Request.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. import {
  2. requestEncode,
  3. responseDecode
  4. } from "./ProtoMap";
  5. import {NoTokenServants} from './../API/ProtoConfig';
  6. import { BASEURL } from "../API/Constant";
  7. //这个path需要token
  8. const PATH = 'Ohplay/Web/HttpToTcp';
  9. //这个path不需要token
  10. const PATH1 = 'ohplay/Web/HttpToTcp';
  11. let token = "";
  12. // 登录
  13. function login() {
  14. uni.login({
  15. provider: 'weixin',
  16. success: function (loginRes) {
  17. const data = {
  18. server: 2,
  19. servant: 1001,
  20. version: 3,
  21. data: {
  22. // phone:Buffer.from('3246541321'),
  23. phone: '17688768233',
  24. code: loginRes.code,
  25. verifyCode: 'asdasd',
  26. nickname: "4",
  27. head_url: "6",
  28. system_type: 1,
  29. }
  30. }
  31. request(data).then((res) => {
  32. // console.log(res)
  33. if(res.code === 0 && res.data.errInfo.errorCode === 0) {
  34. token = res.data.token;
  35. // 缓存token
  36. uni.setStorage({
  37. key: 'token',
  38. data: res.data.token,
  39. });
  40. return;
  41. };
  42. uni.showToast({
  43. title: res.msg,
  44. duration: 2000,
  45. icon: "none"
  46. });
  47. }).catch((res)=> {
  48. console.log("catch")
  49. console.log(res);
  50. });
  51. }
  52. });
  53. // return res
  54. };
  55. // 获取token
  56. function getToken() {
  57. try {
  58. const value = uni.getStorageSync('token');
  59. if (value) {
  60. token = value;
  61. } else {
  62. login();
  63. }
  64. } catch (e) {
  65. login();
  66. }
  67. }
  68. // 获取token
  69. //getToken();
  70. // login();
  71. const defaultHeader = {
  72. "X-Requested-With": "XMLHttpRequest",
  73. "Content-Type": "application/x-protobuf",
  74. }
  75. // 拦截器
  76. uni.addInterceptor('request', {
  77. invoke(args) {
  78. // request 触发前拼接 url
  79. //args.url = BASEURL;
  80. if(token) {
  81. args.header.token = token;
  82. };
  83. },
  84. success(args) {
  85. // 请求成功后
  86. },
  87. fail(err) {
  88. console.log('interceptor-fail',err)
  89. },
  90. complete(res) {
  91. console.log('interceptor-complete',res)
  92. }
  93. })
  94. /**
  95. * POST请求
  96. * @param {*} request
  97. * @returns
  98. */
  99. function request(data, type = "POST", header = defaultHeader) {
  100. let url = BASEURL+PATH
  101. if(NoTokenServants.indexOf(data.servant)>=0){
  102. url = BASEURL+PATH1
  103. }
  104. return new Promise((resolve, reject) => {
  105. uni.request({
  106. url,
  107. header: header,
  108. method: type,
  109. timeout: 15000,
  110. dataType: 'protobuf',
  111. responseType: 'TEXT',
  112. data: requestEncode(data)
  113. }).then((res) => {
  114. res.map((response) => {
  115. if (response && response.statusCode === 200) {
  116. try {
  117. let resJson = JSON.parse(response.data);
  118. if (resJson.code === 0) {
  119. let arrayBuffer = Buffer.from(resJson.data,'base64');
  120. let data = responseDecode(arrayBuffer);
  121. let code = 0;
  122. let msg = "success";
  123. if (typeof data.errInfo !== 'undefined') {
  124. code = data.errInfo.errorCode;
  125. if (typeof data.errInfo.errorMessage === 'string') {
  126. msg = data.errInfo.errorMessage;
  127. } else {
  128. msg = Buffer.from(data.errInfo.errorMessage).toString();
  129. };
  130. };
  131. resolve({
  132. data,
  133. code,
  134. msg
  135. });
  136. } else {
  137. resolve({
  138. code: resJson.code,
  139. msg: resJson.info
  140. });
  141. }
  142. } catch (e) {
  143. resolve({
  144. code: -1,
  145. msg: e.toString(),
  146. });
  147. }
  148. return;
  149. };
  150. // 没有数据或者返回错误
  151. // resolve({
  152. // code: 1006,
  153. // msg: "数据错误",
  154. // });
  155. })
  156. }).catch((error) => {
  157. let [err, res] = error;
  158. reject(err);
  159. })
  160. })
  161. }
  162. module.exports = request;