国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
1、微信的消息應(yīng)答交互
2、微信的管理接口
首頁(yè) 微信小程序 微信開(kāi)發(fā) C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

Feb 16, 2017 pm 04:29 PM

微信應(yīng)用如火如荼,很多公司都希望搭上信息快車(chē),這個(gè)是一個(gè)商機(jī),也是一個(gè)技術(shù)的方向,因此,有空研究下、學(xué)習(xí)下微信的相關(guān)開(kāi)發(fā),也就成為計(jì)劃的安排事情之一了。本系列文章希望從一個(gè)循序漸進(jìn)的角度上,全面介紹微信的相關(guān)開(kāi)發(fā)過(guò)程和相關(guān)經(jīng)驗(yàn)總結(jié),希望給大家了解一下相關(guān)的開(kāi)發(fā)歷程。本篇隨筆主要基于上一篇《C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(1)--開(kāi)始使用微信接口》的基礎(chǔ)上進(jìn)行深入的介紹,介紹微信消息的處理和應(yīng)答的過(guò)程。

1、微信的消息應(yīng)答交互

我們知道,微信的服務(wù)器架起了客戶(hù)手機(jī)和開(kāi)發(fā)者服務(wù)器的一個(gè)橋梁,通過(guò)消息的傳遞和響應(yīng),實(shí)現(xiàn)了與用戶(hù)的交互操作,下面是它的消息流程圖。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

微信向開(kāi)發(fā)者服務(wù)器請(qǐng)求的消息包含了多種類(lèi)型,不過(guò)基本來(lái)說(shuō),分為了文本消息處理、事件消息處理、語(yǔ)音消息的識(shí)別,以及成為開(kāi)發(fā)者之前的那個(gè)消息認(rèn)證操作基本分類(lèi),下面是我繪制的一個(gè)消息分類(lèi)圖,其中介紹了這幾種關(guān)系,以及各自的消息細(xì)化分類(lèi)。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

對(duì)于這些消息的請(qǐng)求,我們?cè)陂_(kāi)發(fā)服務(wù)器端,需要編寫(xiě)相關(guān)的邏輯進(jìn)行對(duì)應(yīng)給的處理,然后給微信服務(wù)器平臺(tái)回應(yīng)消息即可。

在前一篇的隨筆里面我貼過(guò)代碼,介紹微信消息處理的入口操作,代碼如下所示。

????????public?void?ProcessRequest(HttpContext?context)
????????{????????????//WHC.Framework.Commons.LogTextHelper.Info("測(cè)試記錄");

????????????string?postString?=?string.Empty;????????????
????????????if?(HttpContext.Current.Request.HttpMethod.ToUpper()?==?"POST")
????????????{????????????????using?(Stream?stream?=?HttpContext.Current.Request.InputStream)
????????????????{
????????????????????Byte[]?postBytes?=?new?Byte[stream.Length];
????????????????????stream.Read(postBytes,?0,?(Int32)stream.Length);
????????????????????postString?=?Encoding.UTF8.GetString(postBytes);
????????????????}????????????????if?(!string.IsNullOrEmpty(postString))
????????????????{????????????????????Execute(postString);
????????????????}
????????????}????????????else
????????????{
????????????????Auth();
????????????}
????????}

其中的Execute(postString);就是對(duì)消息的處理函數(shù),它實(shí)現(xiàn)了對(duì)不同消息的分發(fā)處理過(guò)程?!?/p>

????????///?<summary>
????????///?處理各種請(qǐng)求信息并應(yīng)答(通過(guò)POST的請(qǐng)求)????????///?</summary>
????????///?<param name="postStr">POST方式提交的數(shù)據(jù)</param>
????????private?void?Execute(string?postStr)
????????{????????????WeixinApiDispatch?dispatch?=?new?WeixinApiDispatch();
????????????string?responseContent?=?dispatch.Execute(postStr);

????????????HttpContext.Current.Response.ContentEncoding?=?Encoding.UTF8;
????????????HttpContext.Current.Response.Write(responseContent);
????????}

里面的WeixinApiDispatch就是一個(gè)分發(fā)的管理類(lèi),它提取請(qǐng)求消息的內(nèi)容,并構(gòu)建不同類(lèi)型的消息參數(shù),傳遞給不同的響應(yīng)函數(shù)進(jìn)行處理,然后返回封裝好的XML內(nèi)容,作為響應(yīng)。

具體的代碼處理邏輯如下圖所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

這個(gè)消息處理接口,其實(shí)就是定義好一系列的對(duì)請(qǐng)求消息的處理操作,參數(shù)是不同給的消息對(duì)象,具體的代碼定義如下所示(由于篇幅原因,省略部分接口,具體可以參考上圖)。

????///?<summary>
????///?客戶(hù)端請(qǐng)求的數(shù)據(jù)接口????///?</summary>
????public?interface?IWeixinAction
????{????????///?<summary>
????????///?對(duì)文本請(qǐng)求信息進(jìn)行處理????????///?</summary>
????????///?<param name="info">文本信息實(shí)體</param>
????????///?<returns></returns>
????????string?HandleText(RequestText?info);????????///?<summary>
????????///?對(duì)圖片請(qǐng)求信息進(jìn)行處理????????///?</summary>
????????///?<param name="info">圖片信息實(shí)體</param>
????????///?<returns></returns>
????????string?HandleImage(RequestImage?info);

...........................????????///?<summary>
????????///?對(duì)訂閱請(qǐng)求事件進(jìn)行處理????????///?</summary>
????????///?<param name="info">訂閱請(qǐng)求事件信息實(shí)體</param>
????????///?<returns></returns>
????????string?HandleEventSubscribe(RequestEventSubscribe?info);????????///?<summary>
????????///?對(duì)菜單單擊請(qǐng)求事件進(jìn)行處理????????///?</summary>
????????///?<param name="info">菜單單擊請(qǐng)求事件信息實(shí)體</param>
????????///?<returns></returns>
????????string?HandleEventClick(RequestEventClick?info);

..............................
????}

從上面的代碼可以看出,不同的消息,到處理函數(shù)這里,就以不同的消息實(shí)體類(lèi)的方式傳遞過(guò)來(lái)了(注意:實(shí)體類(lèi)是我根據(jù)程序開(kāi)發(fā)需要自己定義的,非微信本身的實(shí)體類(lèi)),這樣非常方便我們處理操作,否則每次需要解析不同的消息內(nèi)容,很容易出現(xiàn)問(wèn)題,這樣強(qiáng)類(lèi)型的數(shù)據(jù)類(lèi)型,提高了我們開(kāi)發(fā)微信應(yīng)用的強(qiáng)壯型和高效性。這些實(shí)體類(lèi)的對(duì)象有一定的繼承關(guān)系的,他們的繼承關(guān)系如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

2、微信的管理接口

上面的消息分類(lèi)是微信服務(wù)器向開(kāi)發(fā)者服務(wù)器發(fā)送的消息請(qǐng)求操作,還有一種消息,是我們開(kāi)發(fā)者服務(wù)器向微信服務(wù)器進(jìn)行的消息請(qǐng)求或者響應(yīng),這種這里暫且稱(chēng)之為微信的管理接口,它表明了我們可以通過(guò)這些接口進(jìn)行相關(guān)的消息回復(fù)或者數(shù)據(jù)管理操作。它的分類(lèi)圖如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

微信的回復(fù)消息處理,它也和上面小節(jié)的信息一樣,它也是繼承自BaseMessage實(shí)體類(lèi)的(同樣,下圖的實(shí)體類(lèi)及其繼承關(guān)系也是自定義的,方便程序開(kāi)發(fā)),它的關(guān)系如下所示

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

回復(fù)的消息,一般用的最多的是文本消息和圖文消息。

文本消息的效果如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

圖文消息,可以增加圖片,還可以增加詳細(xì)的鏈接頁(yè)面,是非常好看的一種效果,對(duì)于一些內(nèi)容比較多,希望展現(xiàn)更好效果的,一般采用這種,效果如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答

更多C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(2)--微信消息的處理和應(yīng)答?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1601
29
PHP教程
1502
276