var secret = require('./secret.js')
var Promise = require('./es6-promise.js')
//GET请求
function GET(requestHandler, LoadingFlag = true) {
request('GET', requestHandler, LoadingFlag)
}
//POST请求
function POST(requestHandler, LoadingFlag = true) {
request('POST', requestHandler, LoadingFlag)
}
//GET请求
function GetThen(requestHandler, LoadingFlag = true) {
return requestThen('GET', requestHandler, LoadingFlag)
}
//POST请求
function PostThen(requestHandler, LoadingFlag = true) {
return requestThen('POST', requestHandler, LoadingFlag)
}
function requestThen(method, requestHandler, LoadingFlag) {
if (LoadingFlag) {
wx.showLoading({
title: '数据加载中'
})
wx.showNavigationBarLoading()
}
//requestHandler.data.token = getApp().getToken();
var data = addToken(requestHandler.data);
return httpsPromisify(wx.request)({
url: requestHandler.url,
data: data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
'sign': signature(data)
},
method: method
})
}
function addToken(params) {
if (params == null) {
params = []
}
params.token = getApp().getToken();
params.timestamp = Date.parse(new Date());
return params;
}
function httpsPromisify(fn) {
return function(obj = {}) {
return new Promise((resolve, reject) => {
obj.success = function(res) {
if (res.data.code == 402) {
wx.showToast({
icon: "none",
title: '登录失效,请重新登录',
success() {
wx.navigateTo({
url: "/pages/my/loginOrRegi/loginOrRegi",
})
}
})
}
wx.hideLoading();
wx.hideNavigationBarLoading()
resolve(res)
}
obj.fail = function(res) {
wx.hideLoading();
wx.hideNavigationBarLoading()
wx.showToast({
icon: "none",
title: '亲,服务器暂时没有响应',
})
reject(res)
}
fn(obj)
})
}
}
function signature(params) {
if (params == null) {
return
}
var sortList = []
for (var attr in params) {
sortList.push({
key: attr,
value: params[attr]
})
}
let data = sortList.sort(sortJ);
var strData = "";
for (let i = 0; i < data.length; i++) {
strData += data[i].key + "=" + data[i].value;
if (i != data.length - 1) {
strData += "&"
}
}
return secret.sha1(strData);
}
function sortJ(a, b) {
return a.key > b.key;
}
function request(method, requestHandler, LoadingFlag) {
var data = addToken(requestHandler.data);
if (LoadingFlag) wx.showLoading({
title: '数据加载',
})
wx.request({
url: requestHandler.url,
data: data,
header: {
"Content-Type": "application/x-www-form-urlencoded",
'sign': signature(data)
},
method: method,
success: function(res) {
//注意:可以对参数解密等处理
if (requestHandler.success)
requestHandler.success(res)
},
fail: function(res) {
if (requestHandler.fail)
requestHandler.fail(res)
},
complete: function(res) {
if (LoadingFlag) wx.hideLoading();
if (requestHandler.complete)
requestHandler.complete(res)
}
})
}
module.exports = {
GET: GET,
POST: POST,
GetThen: GetThen,
PostThen: PostThen
}