youncao %!s(int64=4) %!d(string=hai) anos
pai
achega
37546d5f10
Modificáronse 2 ficheiros con 54 adicións e 30 borrados
  1. 2 3
      Lib/ProtoMap.js
  2. 52 27
      Lib/Request.js

+ 2 - 3
Lib/ProtoMap.js

@@ -36,10 +36,8 @@ function requestEncode(request) { //请求的编码
 	return getRequestBuffer(request, buffer);
 };
 
-function responseDecode(response) { //响应的解码
-	const resBuf = Buffer.from(response);
+function responseDecode(resBuf) { //响应的解码
 	const resMessage = common.MsgWebsocket.decode(resBuf);
-	console.log(resMessage)
 	const rspBuf = resMessage.data;
 
 	const ResponseMessage = ProtoConfig[resMessage.servant];
@@ -49,6 +47,7 @@ function responseDecode(response) { //响应的解码
 	const obj = ResponseMessage.toObject(rspMsgObj, {
 		longs: String,
 		enums: String,
+		defaults: true,
 	});
 	return obj
 

+ 52 - 27
Lib/Request.js

@@ -29,17 +29,26 @@ function login() {
 				}
 			}
 			request(data).then((res) => {
-				console.log(res);
-
-				res.token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA';
-
-				token = res.token;
-				// 缓存token
-				uni.setStorage({
-					key: 'token',
-					data: res.token,
+				// 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);
 			});
 		}
 	});
@@ -60,16 +69,36 @@ function getToken() {
 	}
 }
 
-// getToken();
-login();
+// 获取token
+getToken();
+// login();
 
 
 const defaultHeader = {
 	"X-Requested-With": "XMLHttpRequest",
 	"Content-Type": "application/x-protobuf",
-	'Token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VyaWQiOjY1MDYzMywibmFtZSI6IjE4MTI2NDQ3MDE1IiwiZXhwIjoxNjIyODg0NTA1fQ.f7jIm0856-VnynA99MBoA2Dl1pePxI0HT_ECsUp5QHA'
 }
 
+// 拦截器
+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 
@@ -78,38 +107,36 @@ const defaultHeader = {
 function request(data, type = "POST", header = defaultHeader) {
 	return new Promise((resolve, reject) => {
 		uni.request({
-			url: BASEURL,
 			header: header,
 			method: type,
 			timeout: 15000,
 			dataType: 'protobuf',
-			responseType: 'arraybuffer',
+			responseType: 'TEXT',
 			data: requestEncode(data)
 		}).then((res) => {
 			res.map((response) => {
 				if (response && response.statusCode === 200) {
 					try {
-						let enc = new TextDecoder('utf-8')
-						let resJson = JSON.parse(enc.decode(new Uint8Array(response.data))) //转化成json对象
+
+						let resJson = JSON.parse(response.data);
+
 						if (resJson.code === 0) {
 
-							let arrayBuffer = uni.base64ToArrayBuffer(resJson.data)
+							let arrayBuffer = Buffer.from(resJson.data,'base64');
 
 							let data = responseDecode(arrayBuffer);
 							let code = 0;
 							let msg = "success";
+
 							if (typeof data.errInfo !== 'undefined') {
-								console.log(data.errInfo)
-								code = data.errInfo.errorMessage
+								code = data.errInfo.errorCode;
 								if (typeof data.errInfo.errorMessage === 'string') {
-									msg = data.errInfo.errorMessage
+									msg = data.errInfo.errorMessage;
 								} else {
-									msg = Buffer.from(data.errInfo.errorMessage).toString()
-								}
-								if (typeof code === 'undefined' && msg === 'ok') {
-									code = 0
-								}
+									msg = Buffer.from(data.errInfo.errorMessage).toString();
+								};
 							};
+
 							resolve({
 								data,
 								code,
@@ -121,12 +148,10 @@ function request(data, type = "POST", header = defaultHeader) {
 								msg: resJson.info
 							});
 						}
-
 					} catch (e) {
 						resolve({
 							code: -1,
 							msg: e.toString(),
-
 						});
 					}
 					return;