一、寫在前面最近接觸了小程序的開發(fā),后端選擇Java,因?yàn)樾〕绦虻拇a運(yùn)行在騰訊的服務(wù)器上,而我們自己編寫的Java代碼運(yùn)行在我們自己部署的服務(wù)器上,所以一開始不是很明白小程序如何與后臺進(jìn)行通信的,然后查找資料發(fā)現(xiàn)結(jié)合了官方提供的api后好像和我們普通的web前后端通信也沒有多大的區(qū)別,有想法后就寫了這個(gè)測試程序。 二、API文檔wx.request(OBJECT)發(fā)起網(wǎng)絡(luò)請求。使用前請先閱讀說明。 OBJECT參數(shù)說明:
success返回參數(shù)說明:
data 數(shù)據(jù)說明: 最終發(fā)送給服務(wù)器的數(shù)據(jù)是 String 類型,如果傳入的 data 不是 String 類型,會被轉(zhuǎn)換成 String 。轉(zhuǎn)換規(guī)則如下:
示例代碼 wx.request({ url: 'test.php', //僅為示例,并非真實(shí)的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' // 默認(rèn)值 }, success: function(res) { console.log(res.data) } }) 三、基本思路將數(shù)據(jù)通過get方式傳到Java servlet類,servlet得到微信小程序的數(shù)據(jù)打印出來并返回一個(gè)數(shù)據(jù)給微信小程序,從而實(shí)現(xiàn)一個(gè)最簡單的前后端通信。 四、關(guān)鍵代碼微信小程序代碼 index.wxml <view> <button bindtap='bindtest'>test</button> </view> index.js bindtest: function(){ wx.request({ url: 'http://localhost:8080/Demo01/servlet02', data:{ username:'001', password:'abc' }, method:'GET', header: { 'content-type': 'application/json' // 默認(rèn)值 }, success:function(res){ console.log(res.data); }, fail:function(res){ console.log(".....fail....."); } }) }, Java serlvet類代碼 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html;charset=utf-8"); /* 設(shè)置響應(yīng)頭允許ajax跨域訪問 */ response.setHeader("Access-Control-Allow-Origin", "*"); /* 星號表示所有的異域請求都可以接受, */ response.setHeader("Access-Control-Allow-Methods", "GET,POST"); //獲取微信小程序get的參數(shù)值并打印 String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username="+username+" ,password="+password); //返回值給微信小程序 Writer out = response.getWriter(); out.write("進(jìn)入后臺了"); out.flush(); } 五、效果演示前端控制臺 ecplise控制臺 至此說明微信小程序與Java后臺通信成功!當(dāng)然這是最簡單的通信,比較復(fù)雜的是需要對Json數(shù)據(jù)的處理,以后有時(shí)間再總結(jié)下。 |
|