(近期有时间,也饿,接点小型微信小程序私活填肚子)
建议封装自己的HTTP请求,使用方便并且多少可以减少代码量:
function HttpRequst(loading, url, sessionChoose, sessionId, params, method, ask, callBack) { if (loading == true) { wx.showToast({ title: '数据加载中', icon: 'loading' }) } var paramSession = [{}, { 'content-type': 'application/json', 'Cookie': 'JSESSIONID=' + sessionId }, { 'content-type': 'application/json' }, { 'content-type': 'application/x-www-form-urlencoded', 'Cookie': 'JSESSIONID=' + sessionId }, { 'content-type': 'application/x-www-form-urlencoded;charset=utf-8', 'Cookie': 'JSESSIONID=' + sessionId } ] wx.request({ url: baseUrl + url, data: params, dataType: "json", header: paramSession[sessionChoose], method: method, success: function(res) { console.log(res); console.log(res.data.statusCode); if (loading == true) { wx.hideToast(); } if (res.data.needLogin == true) { wxLogin2(loading, callBack);//在此做自己的wx.login } if (res.data.needLogin != true) { callBack(res.data); } }, complete: function() { if (loading == true) { wx.hideToast(); } } })}我们可以在能够使用 HttpRequst 的地方很简单的发出请求,并预定callback函数:
util.HttpRequst(true, "house/report.do", 4, wx.getStorageSync("sessionId"), params, "POST", false, _this.sthAfterReport);利用微信提供的API—getSession,我们可以在小程序端对session过期做相应处理,这可以解决用户注销并切换用户登录的时候,系统需要更新用户的问题:
在app.js-onLaunch()方法中:wx.checkSession({ success: function (res) { console.log("处于登录态"); console.log(wx.getStorageSync('sessionId')); }, fail: function (res) { wx.removeStorageSync('sessionId');//在此可以在用户切换登录的时候,将保存在缓存中的session信息删除. console.log("处于非登录态"); } })在后端我们可以对请求进行拦截,针对不同的框架有不同的实现方法,这里以后端请求filter为例:
/**当小程序端接收到needLogin == true的标记时,触发wx.login()方法,在后端login方法中,将user信息加入session中并将sessionId传回小程序端保存,可以通过wx.setStorageSync()方法保存到微信端缓存当中. *若session中存在user信息,则可以继续进行请求的操作./User user = (User)req.getSession().getAttribute("user");if(null == user){res.put("needLogin", true);return res;}//后端login.map.put("sessionId", req.getSession().getId());//前端login.wx.setStorageSync('sessionId', res.sessionId);大致流程汇总说明:新用户初次登录,小程序端----发送https-request----->服务端.filter获取user为空,返回needLogin为true的标识.小程序端调用wx.login().服务端将session信息放到response.小程序端将session信息保存到缓存.小程序端之后的request调用,都在request里附加session信息.服务端根据session信息取出user对象,进行后续操作.














