Request.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import {
  2. requestEncode,
  3. responseDecode
  4. } from "./ProtoMap";
  5. import { BASEURL } from "../API/Constant";
  6. let token = "";
  7. // 登录
  8. function login() {
  9. uni.login({
  10. provider: 'weixin',
  11. success: function (loginRes) {
  12. const data = {
  13. server: 2,
  14. servant: 1001,
  15. version: 3,
  16. data: {
  17. // phone:Buffer.from('3246541321'),
  18. phone: '17688768233',
  19. code: loginRes.code,
  20. verifyCode: 'asdasd',
  21. nickname: "4",
  22. head_url: "6",
  23. system_type: 1,
  24. }
  25. }
  26. request(data).then((res) => {
  27. console.log(res);
  28. res.token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA';
  29. token = res.token;
  30. // 缓存token
  31. uni.setStorage({
  32. key: 'token',
  33. data: res.token,
  34. });
  35. });
  36. }
  37. });
  38. // return res
  39. };
  40. // 获取token
  41. function getToken() {
  42. try {
  43. const value = uni.getStorageSync('token');
  44. if (value) {
  45. token = value;
  46. } else {
  47. login();
  48. }
  49. } catch (e) {
  50. login();
  51. }
  52. }
  53. // getToken();
  54. login();
  55. const defaultHeader = {
  56. "X-Requested-With": "XMLHttpRequest",
  57. "Content-Type": "application/x-protobuf",
  58. 'Token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA'
  59. }
  60. /**
  61. * POST请求
  62. * @param {*} request
  63. * @returns
  64. */
  65. function request(data, type = "POST", header = defaultHeader) {
  66. return new Promise((resolve, reject) => {
  67. uni.request({
  68. url: BASEURL,
  69. header: header,
  70. method: type,
  71. timeout: 15000,
  72. dataType: 'protobuf',
  73. responseType: 'arraybuffer',
  74. data: requestEncode(data)
  75. }).then((res) => {
  76. res.map((response) => {
  77. if (response && response.statusCode === 200) {
  78. try {
  79. let enc = new TextDecoder('utf-8')
  80. let resJson = JSON.parse(enc.decode(new Uint8Array(response.data))) //转化成json对象
  81. if (resJson.code === 0) {
  82. let arrayBuffer = uni.base64ToArrayBuffer(resJson.data)
  83. let data = responseDecode(arrayBuffer);
  84. let code = 0;
  85. let msg = "success";
  86. if (typeof data.errInfo !== 'undefined') {
  87. console.log(data.errInfo)
  88. code = data.errInfo.errorMessage
  89. if (typeof data.errInfo.errorMessage === 'string') {
  90. msg = data.errInfo.errorMessage
  91. } else {
  92. msg = Buffer.from(data.errInfo.errorMessage).toString()
  93. }
  94. if (typeof code === 'undefined' && msg === 'ok') {
  95. code = 0
  96. }
  97. };
  98. resolve({
  99. data,
  100. code,
  101. msg
  102. });
  103. } else {
  104. resolve({
  105. code: resJson.code,
  106. msg: resJson.info
  107. });
  108. }
  109. } catch (e) {
  110. resolve({
  111. code: -1,
  112. msg: e.toString(),
  113. });
  114. }
  115. return;
  116. };
  117. // 没有数据或者返回错误
  118. // resolve({
  119. // code: 1006,
  120. // msg: "数据错误",
  121. // });
  122. })
  123. }).catch((error) => {
  124. let [err, res] = error;
  125. reject(err);
  126. })
  127. })
  128. }
  129. module.exports = request;