王清 王文莉
【摘 要】基于新浪SAE平臺,利用PHP CURL技術獲取課表查詢頁面服務器會話SESSION_ID、驗證碼圖片,模擬提交教師信息表單數(shù)據(jù),獲取、識別、存儲教師課表信息。SAE PHP服務器接收、識別微信公眾號轉(zhuǎn)發(fā)的用戶菜單點擊事件、文本消息,獲取用戶身份,查詢對應課表信息發(fā)送給微信公眾號,微信公眾號回復給用戶。
【關鍵詞】SAE平臺;微信課表信息;查詢系統(tǒng)
0 前言
教授課程較多的老師,課表安排繁多復雜。老師隨身攜帶紙質(zhì)課表也十分不便,當然我們可以使用智能手機上網(wǎng)查詢??上鴥?nèi)大多高校的教務系統(tǒng)為傳統(tǒng)的HTML網(wǎng)頁,僅適合電腦端瀏覽;使用手機瀏覽,頁面顯示大多變形或異常,這就給課表的查詢帶來一定的困難?,F(xiàn)在,微信是一種生活方式!智能手機用戶幾乎均安裝了微信客戶端。那么,使用微信查詢課表將十分的方便。新浪云應用(Sina App Engine簡稱SAE)是國內(nèi)最具影響力的,分布式Web應用/業(yè)務開發(fā)托管、運行平臺。SAE提供數(shù)據(jù)庫服務、存儲與CDN服務、應用程序服務、網(wǎng)絡與安全服務、通信服務與第三方服務等[1]。將開發(fā)的PHP、JAVA web應用運行在SAE平臺上,無需考慮硬件、運維、安全等問題,移動應用開發(fā)部署十分方便,且運維成本低廉,適合中小型移動應用的開發(fā)部署。
1 技術路線
1.1 微信平臺及綁定
首先開通一個微信公眾號,并通過微信的公眾號認證,通過微信認證有權使用微信提供的自定義菜單接口。本文使用的微信公眾號為zzrvtchelp。zzrvtchelp公眾號采用回調(diào)開發(fā)模式,微信公眾平臺將用戶關注事件、用戶發(fā)送的消息、圖片等信息轉(zhuǎn)發(fā)給SAE PHP服務器,由SAE PHP服務器處理;SAE PHP服務器處理完畢將結(jié)果數(shù)據(jù)發(fā)送給微信公眾平臺,微信公眾平臺再將其發(fā)送給用戶,流程如圖1所示。
用戶關注微信公眾號后,用戶可發(fā)送消息給公眾號,公眾號反饋消息給用戶完成用戶與微信公眾號的互動。但這種互動方式微信公眾號無法識別用戶的教工身份。微信為每一個用戶提供了一個openID,用戶發(fā)送的消息與公眾號反饋的消息均攜帶此openID,我們將openID與教師在教務系統(tǒng)中的userID綁定就可以識別教師的身份查詢并回復其課表。
用戶關注微信公眾號時,平臺反饋關注消息如圖2所示。提示用戶點擊藍色字體鏈接進入微信綁定頁面,如圖3所示。微信綁定頁面URL地址為:
http://2.zzrvtc.sinaapp.com/KB1/mainJsKb.php?openID=oYNlSs5uk-Vcbp0G0Pqz2RZ7jbx8。該URL攜帶了openID參數(shù),該參數(shù)是由SAE后臺分析用戶關注事件獲取的該用戶的openID,用于微信用戶的綁定。用戶輸入教工號、驗證碼選取查詢得到的教工對象,最后點擊【綁定微信并導入課表】按鈕,頁面發(fā)送GET請求到SAE PHP服務器用于獲取用戶課表。
1.2 獲取課表
鄭州鐵路職業(yè)技術學院采用青果公司的教務系統(tǒng),該系統(tǒng)未對外開放課表查詢接口,但提供了教師課表查詢頁面方便教師查詢課表。我們可通過CURL提交表單數(shù)據(jù)給該頁面URL接口以獲取教師的課表。
微信綁定頁面是運行在SAE服務器上的PHP頁面,用戶點擊打開該頁面時,服務器首先采用CURL登陸青果教務系統(tǒng),獲得頁面與服務器交互服務器分配的SESSION_ID和與此SESSION_ID對應的驗證碼圖片。CURL是一個利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具,支持HTTP、FTP、TELNET等協(xié)議,常用于WEB頁面訪問、模擬表單提交、網(wǎng)絡資源下載等操作,PHP支持CURL庫[2]。用戶填寫教工號或姓名、驗證碼選取員工對象(針對教師重名的現(xiàn)象),點擊【綁定微信并導入課表】按鈕,頁面發(fā)送POST請求給SAE PHP服務器。
位于SAE上的PHP服務器接收到該頁面的POST請求,并獲取其攜帶的數(shù)據(jù),PHP服務器采用CURL向教務系統(tǒng)教師課表查詢頁面URL接口發(fā)送POST請求(該請求攜帶表1所示數(shù)據(jù)),教務系統(tǒng)返回該教師的課表數(shù)據(jù)。
青果返回的課表數(shù)據(jù)是HTML頁面,我們需對該HTML頁面解析才能獲取課表的文本信息。PHP提供了HTML解析類庫SIMPLE_HTML_DOM,利用SIMPLE_HTML_DOM根據(jù)HTML頁面的格式特點如標題、表格、列表等HTML元素節(jié)點對HTML頁面進行解析獲取我們需要的課表數(shù)據(jù)。
SAE提供了MYSQL數(shù)據(jù)庫用于移動應用的數(shù)據(jù)存儲,將解析得到的課表數(shù)據(jù)存儲到MYSQL數(shù)據(jù)表中,數(shù)據(jù)包包含openID字段,用于識別用戶微信是否綁定。
1.3 微信課表查詢
用戶點擊【我的課表】菜單查詢當日課表或發(fā)送數(shù)字0X(X取值1-7)查詢本周數(shù)字對應日的課表;如發(fā)送01查詢本周一課表。用戶點擊【我的課表】或發(fā)送數(shù)字0X,微信公眾號將菜單點擊事件或文本消息發(fā)送給SAE PHP服務器,服務器識別菜單事件ID、消息關鍵詞以及消息的發(fā)送者即該用戶微信openID,在課程數(shù)據(jù)表中查詢openID對應的課表內(nèi)容,將課表內(nèi)容發(fā)送給微信公眾號,微信公眾號以文本方式返回教師的課表,如圖4、圖5所示。
2 結(jié)語
利用新浪SAE平臺、微信客戶端實現(xiàn)了微信課表查詢移動應用。目前zzrvtchelp公眾號處于我校軟件學院系內(nèi)教師試用階段,已平穩(wěn)運行6個月,我系教師反映效果良好,將向全校推廣。微信課表查詢是數(shù)字校園向移動互聯(lián)發(fā)展的一個小的嘗試,下一步將結(jié)合我校實際,開發(fā)微信班車位置查詢等移動應用。
【參考文獻】
[1]新浪.SAE云應用[EB/OL].http://www.sinacloud.com/sae.html,2015.
[2]腳本之家.PHP中使用cURL實現(xiàn)Get和Post請求的方法[EB/OL].http://www.jb51.net/article/34745.htm,2013-03-13.
[責任編輯:楊玉潔]