亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1、微信的訊息應(yīng)答互動(dòng)
2、微信的管理介面
首頁(yè) 微信小程式 微信開發(fā) C#開發(fā)微信入口網(wǎng)站及應(yīng)用(2)--微信訊息的處理與應(yīng)答

C#開發(fā)微信入口網(wǎng)站及應(yīng)用(2)--微信訊息的處理與應(yīng)答

Feb 16, 2017 pm 04:29 PM

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

1、微信的訊息應(yīng)答互動(dòng)

我們知道,微信的伺服器架起了客戶手機(jī)和開發(fā)者伺服器的一個(gè)橋樑,透過(guò)訊息的傳遞和回應(yīng),實(shí)現(xiàn)了與使用者的互動(dòng)操作,以下是它的訊息流程圖。

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

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

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

對(duì)於這些訊息的請(qǐng)求,我們?cè)陂_發(fā)伺服器端,需要編寫相關(guān)的邏輯進(jìn)行對(duì)應(yīng)給的處理,然後給微信伺服器平臺(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í)作了不同訊息的分發(fā)處理過(guò)程。 '

????????///?<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ā)的管理類,它提取請(qǐng)求訊息的內(nèi)容,並建構(gòu)不同類型的訊息參數(shù),傳遞給不同的回應(yīng)函數(shù)進(jìn)行處理,然後傳回封裝好的XML內(nèi)容,作為響應(yīng)。

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

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

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

????///?<summary>
????///?客戶端請(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í)體類別的方式傳遞過(guò)來(lái)了(注意:實(shí)體類別是我根據(jù)程式開發(fā)需要自己定義的,非微信本身的實(shí)體類),這樣非常方便我們處理操作,否則每次需要解析不同的消息內(nèi)容,很容易出現(xiàn)問(wèn)題,這樣強(qiáng)類型的數(shù)據(jù)類型,提高了我們開發(fā)微信應(yīng)用的強(qiáng)壯型和高效性。這些實(shí)體類別的物件有一定的繼承關(guān)係的,他們的繼承關(guān)係如下所示。

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

2、微信的管理介面

上面的訊息分類是微信伺服器向開發(fā)者伺服器發(fā)送的訊息請(qǐng)求操作,還有一種訊息,是我們開發(fā)者伺服器向微信伺服器進(jìn)行的訊息請(qǐng)求或回應(yīng),這種這裡暫且稱之為微信的管理接口,它表明了我們可以透過(guò)這些接口進(jìn)行相關(guān)的訊息回復(fù)或資料管理操作。它的分類圖如下所示。

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

微信的回覆訊息處理,它也和上面小節(jié)的資訊一樣,它也是繼承自BaseMessage實(shí)體類別的(同樣,下圖的實(shí)體類別及其繼承關(guān)係也是自訂的,方便程式開發(fā) ),它的關(guān)係如下圖

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

回覆的訊息,一般用的最多的是文字訊息和圖文訊息。

文字訊息的效果如下所示。

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

圖文訊息,可以增加圖片,還可以增加詳細(xì)的連結(jié)頁(yè)面,是非常好看的一種效果,對(duì)於一些內(nèi)容比較多,希望展現(xiàn)更好效果的,一般採(cǎi)用這種,效果如下所示。

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

更多C#開發(fā)微信入口網(wǎng)站及應(yīng)用(2)--微信訊息的處理與應(yīng)答?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)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脫衣器

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整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72