import { requestEncode, responseDecode } from "./ProtoMap"; import {NoTokenServants} from './../API/ProtoConfig'; import { BASEURL } from "../API/Constant"; //这个path需要token const PATH = 'Ohplay/Web/HttpToTcp'; //这个path不需要token const PATH1 = 'ohplay/Web/HttpToTcp'; let token = ""; // 登录 function login() { uni.login({ provider: 'weixin', success: function (loginRes) { const data = { server: 2, servant: 1001, version: 3, data: { // phone:Buffer.from('3246541321'), phone: '17688768233', code: loginRes.code, verifyCode: 'asdasd', nickname: "4", head_url: "6", system_type: 1, } } request(data).then((res) => { // console.log(res) if(res.code === 0 && res.data.errInfo.errorCode === 0) { token = res.data.token; // 缓存token uni.setStorage({ key: 'token', data: res.data.token, }); return; }; uni.showToast({ title: res.msg, duration: 2000, icon: "none" }); }).catch((res)=> { console.log("catch") console.log(res); }); } }); // return res }; // 获取token function getToken() { try { const value = uni.getStorageSync('token'); if (value) { token = value; } else { login(); } } catch (e) { login(); } } // 获取token //getToken(); // login(); const defaultHeader = { "X-Requested-With": "XMLHttpRequest", "Content-Type": "application/x-protobuf", } // 拦截器 uni.addInterceptor('request', { invoke(args) { // request 触发前拼接 url //args.url = BASEURL; if(token) { args.header.token = token; }; }, success(args) { // 请求成功后 }, fail(err) { console.log('interceptor-fail',err) }, complete(res) { console.log('interceptor-complete',res) } }) /** * POST请求 * @param {*} request * @returns */ function request(data, type = "POST", header = defaultHeader) { let url = BASEURL+PATH if(NoTokenServants.indexOf(data.servant)>=0){ url = BASEURL+PATH1 } return new Promise((resolve, reject) => { uni.request({ url, header: header, method: type, timeout: 15000, dataType: 'protobuf', responseType: 'TEXT', data: requestEncode(data) }).then((res) => { res.map((response) => { if (response && response.statusCode === 200) { try { let resJson = JSON.parse(response.data); if (resJson.code === 0) { let arrayBuffer = Buffer.from(resJson.data,'base64'); let data = responseDecode(arrayBuffer); let code = 0; let msg = "success"; if (typeof data.errInfo !== 'undefined') { code = data.errInfo.errorCode; if (typeof data.errInfo.errorMessage === 'string') { msg = data.errInfo.errorMessage; } else { msg = Buffer.from(data.errInfo.errorMessage).toString(); }; }; resolve({ data, code, msg }); } else { resolve({ code: resJson.code, msg: resJson.info }); } } catch (e) { resolve({ code: -1, msg: e.toString(), }); } return; }; // 没有数据或者返回错误 // resolve({ // code: 1006, // msg: "数据错误", // }); }) }).catch((error) => { let [err, res] = error; reject(err); }) }) } module.exports = request;