999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于互聯網開放平臺的微信公眾號構建

2017-06-22 08:42:14段任
中國管理信息化 2017年5期

段任

(云南財經大學 信息學院,昆明 650221)

[摘 要] 互聯網企業基于自身業務與技術優勢向第三方開發者、商戶等提供開放平臺,支持業務邏輯處理、數據存儲、計算能力等的開放API接入,有效提高了互聯網生產力水平,促進了業態創新,有力推動了“互聯網+”的生態擴展。基于此,本文提出了一個基于互聯網開放平臺的微信公眾號構建方案,以提高公眾號開發效率,降低其應用成本。

[關鍵詞] 開放平臺;開放API;微信公眾號構建

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2017. 05. 086

[中圖分類號] TP311 [文獻標識碼] A [文章編號] 1673 - 0194(2017)05- 0160- 03

1 背景及意義

微信公眾號被廣泛用于各種主題的宣傳與商業服務,其構建可采取編輯模式與開發模式,前者通過圖形界面操作訂制公眾號,限于簡單功能,無法實現個性化及深入服務。開發模式通過編程實現,需要建立微信消息框架,通過標準的互聯網服務提供訪問,支持更多高級的個性化應用,但開發成本較高。

本文提出利用互聯網開放平臺構建微信公眾號的方案,可有效利用網絡服務商的富集資源,減少公眾號的數據存儲、服務實現成本,提高開發效率。

2 系統架構

微信開放平臺通過公眾號與關注用戶間信息交換實現服務功能,公眾號能提供多媒體信息的規模推送、定向(如性別、地區、分組等)推送、對一互動、智能回復等功能,有力支持客戶的宣傳、營銷、客服、公共服務等應用。公眾號功能服務通過微信開放平臺開發接口提供訪問,微信開放平臺支持互聯網第三方服務的接入。因此,微信公眾號可以有效利用互聯網已有開放平臺資源提供的豐富功能,據此構建的公眾號可采用如下系統架構。

微信用戶通過終端登錄微信,發出應用請求到微信接入服務器,接入服務器將應用請求轉發給公眾號服務器處理。公眾號服務器根據應用請求向具體的第三方平臺請求服務,將返回的服務結果發送給接入服務器,接入服務器再將結果發送到用戶終端的微信上。公眾號服務器是一個邏輯服務器,聚合第三方開放平臺的多種服務形成,可以集成數據存儲、Web應用以及其他業務功能。

為完成對用戶微信消息的接收及對應事件處理,公眾號要在公眾號服務器上指定第三方開放平臺上的服務接口URL,從而有效實現服務請求轉發與響應接收。第三方平臺到微信開放平臺的接口調用需要獲取訪問憑證access_token。一個公眾號申請獲批后,會分配AppID(應用ID)、AppSecret(應用密鑰)作為第三方用戶接入的唯一憑證與憑證密鑰。在每次請求調用微信開放平臺接口時驗證AppID、AppSecret從而獲得接口訪問憑證access_token。

因此,開發公眾號需在微信上進行接口配置,填寫使用的服務器地址URL、Token及EncodingAESKey,其中Token由開發者任意填寫,用作生成簽名,EncodingAESKey可手動填寫或隨機生成,用作消息體加解密的密鑰。

下面以一個提供周邊搜索的微信公眾號為例闡述開放平臺的集成調用,該公眾號支持用戶發送位置信息查詢周邊興趣信息。其解決思路為:用戶上線時自動采集其位置坐標,公眾服務器收到位置消息后,將用戶ID、位置信息存入公眾號的用戶服務記錄,當用戶發送位置查詢要求時,根據位置記錄調用第三方地圖的查詢服務返回要求的興趣信息。

在此選擇百度地圖位置查詢服務,為便于集成,還采用了百度的一系列開放服務,數據存儲使用百度BAE的MySQL,Web服務器使用BAE的Tomecat 7.0,以War包形式部署作為公眾號服務器,開發語言使用Java。

3 消息通信的實現

3.1 消息通信

構建基于開放平臺的公眾號工作包括:微信終端功能訂制、公眾號應用數據存儲、第三方平臺與微信開放平臺間的消息通信處理,其核心是消息通信。用戶終端與服務器的交互消息包括:請求消息、事件和響應消息。其中請求消息是用戶發送給公眾號的消息,包括文字、語音、圖片、地理位置、鏈接和視頻;事件消息是因用戶對公眾賬號操作引發的公眾號發送給微信服務器消息,包括關注、取消關注、同意使用位置信息并進入公眾賬號、點擊自定義菜單;響應消息是指公眾賬號回復用戶的消息,消息內容包括文本、圖片、語音、視頻、音樂及圖文。

微信終端、微信服務器與第三方服務器間的消息通信過程采用HTTP協議,消息封裝格式為XML,其通信過程過程如下:

(1)用戶通過微信終端向公眾號發送請求或事件消息,消息被送達公眾號服務器。

(2)公眾號服務器將收到的消息用XML封裝,根據接口配置指定的URL,通過HTTP POST方式將消息轉發給第三方服務器。

(3)第三方服務器對收到的消息進行解析,將關鍵字、關鍵值與預置規則比對調用API,并將處理結果封裝為響應消息回送。

(4)微信服務器收到響應消息后,將處理結果轉發至用戶微信端的公眾號。

3.2 消息處理

根據上述消息通信過程,公眾號的消息處理模塊應支持多種消息的請求與響應,通過微信后臺應用接口與用戶通信,負責將微信服務器收到的用戶請求轉發至第三方開放平臺,并將處理結果進行解析封裝,返回給微信終端。

使用XML對各類消息進行定義,請求消息的XML定義如下:

<![CDATA[toUser]] >

<![CDATA[fromUser]] >

1346781860

<![CDATA[MsgType]] >

不同類型數據格式

1234567890123456

ToUserName、FromUserName、CreateTime分別是接收者、發送者、創建時間。MsgType是消息內容的類型,其值CDATA包括text、image、voice、video、location及link等。響應消息定義與之類似,但不需要MsgId,事件的XML定義則是用代替了,Event的值CDATA包括:CLICK、VIEW、subscribe、unsubscribe和LOCATION等。

使用標準的XML數據處理方法,在消息發送、接收兩端對消息進行封裝和解析,可以實現有效的內容交互。用戶端向公眾賬號發送請求消息、或做出操作時,微信服務器會將消息或事件用XML格式通過doPOST發送到公眾賬號的入口URL,request中封裝了請求相關的所有內容。公眾號服務器同樣適用XML封裝返回處理及響應結果。

對request消息解析使用Java提供的XML API dom4j,在消息接收端,首先使用request對象的getInputStream()方法獲得輸入流句柄,再使用dom4j的元素遍歷方法解析XML請求消息,基本步驟如下:

public static Map parseXml(HttpServletRequest request) {

Map map = new HashMap(); InputStream inputStream = request.getInputStream();//從request取得輸入流

SAXReader reader = new SAXReader();//讀取輸入流

Document document = reader.read(inputStream);

Element root = document.getRootElement();//獲取xml根元素

List elementList = root.elements();

for (Element e : elementList)//遍歷所有子節點

map.put(e.getName(), e.getText());

inputStream.close();//釋放資源

inputStream = null;

return map;//返回結果}

request消息經parseXml()方法解析后,結果存放在HashMap中,只要使用關鍵字MsgType便能從HashMap判斷是消息或事件,進而查詢其對應類型及內容,并采取相應處理。

響應消息的封裝需要將java對象轉換為XML,使用Xstream開源框架可以方便實現Java對象到XML的轉換。微信服務器的XML格式帶有CDATA塊,Xstream框架本身并不支持CDATA塊的生成,所以使用匿名內部類實現Xstream擴展,實例如下:

private static XStream xstream = new XStream(new XppDriver( ) {

public HierarchicalStreamWriter createWriter(Writer out) {

return new PrettyPrintWriter(out) {

boolean cdata = true;

@SuppressWarnings("unchecked")

protected void writeText(QuickWriter writer, String text) {

if (cdata) {

writer.write("<![CDATA[");

writer.write(text);

writer.write("]] >");}

else writer.write(text); }

};}});

將第三方服務器處理的響應消息轉換為微信服務器所支持的XML格式需要對不同類型內容分別定義轉換函數。以下是圖文消息轉化的方法,其他類型對象采取類似處理即可,在此不贅述。

public static String newsMessageToXml(NewsMessage newsMessage) {

xstream.alias("xml", newsMessage.getClass());

xstream.alias("item", new Article().getClass());

return xstream.toXML(newsMessage);}

4 開放平臺的集成調用

由于百度在GCJ-2坐標系的基礎上增加了BD-09二次加密措施,直接使用用戶端采集的GCJ-2坐標信息進行查詢誤差較大,必須對用戶位置信息進行百度坐標轉換糾偏。公眾號在采集用戶位置信息時,調用百度坐標轉換API將用戶位置坐標轉換為百度地圖坐標,然后將“用戶OpenID、轉換前坐標,轉換后坐標”存入數據庫。用戶發送“附近+關鍵字”查詢時,公眾號的實現過程為:

(1)調用BEA的MySQL查詢API,根據“OpenID”查詢用戶對應的百度地圖位置;

(2)根據用戶位置信息調用百度地圖Place API對用戶位置周邊圓形區域進行查詢,解析查詢返回結果;

(3)調用百度地圖的JavaScript API處理導航頁面,將結果封裝成圖文信息發回客戶端

(4)客戶端公眾號收到圖文信息后在地圖頁面打開顯示結果。

5 結 語

本文提出了利用互聯網開放平臺快速構建微信公眾號的系統解決方案,并以提供“周邊搜索”的公眾號為例闡述如何實現微信開放平臺與第三方平臺的消息通信及開放API調用。該方案為移動社交網絡實現“互聯網+”生態下的多方協作、利益共享提供了一個高效率、低成本的解決思路。

主要參考文獻

[1]Xiang Y, Chang D, Chen B. A Smart University Campus Information Dissemination Framework Based on Wechat Platform[M]// R Zhang,et al (Eds).LISS 2013,Springer,Berlin Heidelberg, 2015: 927-932.

[2]Zhao J, Huang X. The Application of WeChat to the University Laboratory Management Information System[C]//Proceedings of the 4th International Conference on Computer Engineering and Networks,Berlin:Springer International Publishing, 2015: 907-916.

主站蜘蛛池模板: 女同久久精品国产99国| 婷婷五月在线| 色综合天天娱乐综合网| 色婷婷成人网| 成人夜夜嗨| 国产91导航| 国产玖玖玖精品视频| 欧美激情综合一区二区| 亚洲视频黄| 亚洲精品在线观看91| av无码久久精品| 欧美精品v欧洲精品| 国产精品一线天| 在线播放国产99re| 久久久久青草线综合超碰| 91外围女在线观看| 日本成人精品视频| 片在线无码观看| 国产精品免费电影| 欧美色香蕉| 国产在线精品美女观看| 国产精品分类视频分类一区| 国产在线观看一区精品| 呦女亚洲一区精品| 亚洲综合日韩精品| 欧美成人日韩| www.亚洲一区| 超薄丝袜足j国产在线视频| 久久久久久久97| 成人在线亚洲| 精品久久人人爽人人玩人人妻| h视频在线播放| 国产97视频在线观看| 国产黄色片在线看| 青青草国产精品久久久久| 毛片免费在线| 日韩午夜福利在线观看| a级毛片视频免费观看| 日韩午夜福利在线观看| 精品伊人久久大香线蕉网站| 国产欧美日本在线观看| 日本道综合一本久久久88| 国产乱人免费视频| 精品人妻系列无码专区久久| 久久午夜夜伦鲁鲁片不卡| 午夜性刺激在线观看免费| 男女精品视频| 国产第八页| 国产成人高清精品免费软件 | 国产自在自线午夜精品视频| 亚洲一区二区黄色| 国产波多野结衣中文在线播放| 国产精品综合色区在线观看| 国产女人在线视频| 国产精品免费久久久久影院无码| 在线另类稀缺国产呦| 丰满人妻久久中文字幕| 九色国产在线| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲欧美另类视频| 91一级片| 亚洲最猛黑人xxxx黑人猛交| 成色7777精品在线| 在线国产欧美| 114级毛片免费观看| 精品丝袜美腿国产一区| 亚洲女人在线| 99热在线只有精品| 自拍中文字幕| 人妻中文字幕无码久久一区| 欧美视频在线观看第一页| 精品一区二区三区视频免费观看| 久草性视频| 亚洲无码熟妇人妻AV在线| 亚洲日本一本dvd高清| 免费三A级毛片视频| 在线欧美日韩| 久久午夜夜伦鲁鲁片不卡| 试看120秒男女啪啪免费| 97se亚洲综合在线天天| 日韩欧美中文字幕在线韩免费| 亚洲最新地址|