网络请求
wx.request(Object object) 发起网络请求,最终发送给服务器的数据是 String 类型,
如果传入的 data 不是 String 类型,会被转换成 String 。
wx.request({
url: serverUrl + '/user/login.do',
method: "POST",
data: {
"username": e.detail.value.username,
"password": e.detail.value.password
},
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
success(res) {
console.log(res.data);
if (res.data.status == 0) {
// 登录成功跳转
let session_id = res.data.session_id;
wx.setStorageSync('session_id', session_id)
wx.showToast({
title: res.data.msg,
icon: 'success',
duration: 2000
});
}else{
wx.showToast({
title: res.data.msg,
icon: 'none',
duration: 2000
})
}
},
complete(){
console.log(e.detail.value.username)
console.log(password)
}
})
}
},
获得cookie并存储
登录请求回来之后,读取res的header的cookie
这里的sessionid随便写的,就是个唯一标识
wx.setStorageSync("sessionid", res.header["Set-Cookie"])
请求带上cookie
//创建header
var header;
header = {
'content-type': 'application/x-www-form-urlencoded',
'cookie':wx.getStorageSync("sessionid")//读取cookie
};
//进行请求,一般外层都有一个封装,然后放在公共类里边
wx.request({
url: realURL,
method: method,
header: header,//传在请求的header里
data: datas,
success(res) {
//请求成功的处理
}
)}
session在本地管理
var sessionkey;
var sessiondate;
//可以封装一个保存sessinid的方法,将sessionid存储在localstorage中,定为半小时之后清空此sessionid缓存。
function saveSession(sessionId) {
console.log(" now save sessionid: " + sessionId)
wx.setStorageSync(“sessionkey” sessionId)//保存sessionid
wx.setStorageSync(“sessiondate”, Date.parse(new Date()))//保存当前时间,
}
// 过期后清除session缓存
function removeLocalSession() {
wx.removeStorageSync(“sessionid的key”)
wx.removeStorageSync(sessiondate)
console.log("remove session!")
}
//检查sessionid是否过期的方法
function checkSessionTimeout() {
var sessionid = wx.getStorageSync(sessionkey)
if (sessionid == null || sessionid == undefined || sessionid == "") {
console.log("session is empty")
return false
}
var sessionTime = wx.getStorageSync(sessiondate)
var aftertimestamp = Date.parse(new Date())
if (aftertimestamp - sessionTime >= SESSION_TIMEOUT) {
removeLocalSession()
return false
}
return true
}
//如果sessionid过期,重新获取sessionid
function checkSessionOk() {
console.log("check session ok?...")
var sessionOk = checkSessionTimeout()
if (!sessionOk) {
requestsessionid(function () {
})
}}
//定义一个方法每隔一段时间检查sessionid是否过期
function checkcrosstime() {
setInterval(checkSessionTimeout, ----)//这个时间可以自定义。比如25 * 60 * 1000(代表25分钟)
}
欢迎点评知错,本人小白,文章有借鉴其他大佬的博客。