本文C#微信開(kāi)發(fā)之接收/ 返回文字訊息原理與實(shí)現(xiàn)方法,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
#接收/返回文字訊息
①接收/返回文字訊息原理說(shuō)明
#當(dāng)普通微信用戶向公眾帳號(hào)發(fā)送訊息時(shí),微信伺服器將POST訊息的XML資料包到開(kāi)發(fā)者填寫(xiě)的URL上,著手開(kāi)發(fā)之前先行閱讀微信公眾平臺(tái)接收普通訊息微信開(kāi)發(fā)文檔,對(duì)微信的這種訊息處理機(jī)制有一定了解之後再著手開(kāi)發(fā)(微信開(kāi)發(fā)接收普通訊息開(kāi)發(fā)文件)
注意點(diǎn):
1、關(guān)於重試的訊息排重,推薦使用msgid排重。
2、微信伺服器在五秒鐘內(nèi)收不到回應(yīng)會(huì)斷掉連接,並且重新發(fā)起請(qǐng)求,總共重試三次。假如伺服器無(wú)法保證在五秒內(nèi)處理並回復(fù),可以直接回復(fù)空串,微信伺服器不會(huì)對(duì)此作任何處理,並且不會(huì)發(fā)起重試。詳情請(qǐng)見(jiàn)「傳送訊息-被動(dòng)回覆訊息##」。
3、為了確保更高的安全性保障,開(kāi)發(fā)者可以在公眾平臺(tái)官網(wǎng)的開(kāi)發(fā)者中心處設(shè)定訊息加密。開(kāi)啟加密後,用戶發(fā)送的訊息會(huì)被加密,公眾號(hào)被動(dòng)回覆用戶的訊息也需要加密(但開(kāi)發(fā)者透過(guò)客服介面等API呼叫形式向用戶發(fā)送訊息,則不受影響)。關(guān)於訊息加解密的詳細(xì)說(shuō)明,請(qǐng)參閱「訊息加解密說(shuō)明」。
?POST到開(kāi)發(fā)者伺服器上邊的XML格式為:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
#?接收訊息封包參數(shù)說(shuō)明:
?傳回文字訊息的XML格式:
#
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml>
##傳回文字訊息封包參數(shù)說(shuō)明:
#②接收/回傳文字訊息代碼實(shí)作
開(kāi)發(fā)者在自己伺服器上邊接收微信伺服器POST過(guò)來(lái)的XML封包接收代碼如下:
if(IsPostBack) { //*********************************自動(dòng)應(yīng)答代碼塊********************************* string postString = string.Empty; using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); //接收的消息為GBK格式 postString = Encoding.GetEncoding("GBK").GetString(postBytes); string responseContent = help.ReturnMessage(postString ); //返回的消息為UTF-8格式 HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); } //********************************自動(dòng)應(yīng)答代碼塊end******************************* }######################## ########注意:接收訊息的時(shí)候要將訊息格式轉(zhuǎn)換為「GBK」格式,否則後邊進(jìn)行訊息解析的時(shí)候沒(méi)辦法進(jìn)行有效解析。 ###############ReturnMessage()處理方法程式碼如下:###############
/// <summary> /// 統(tǒng)一全局返回消息處理方法 /// </summary> /// <param name="postStr"></param> /// <returns></returns> public string ReturnMessage(string postStr) { string responseContent = ""; XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr))); XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType"); if (MsgType != null) { switch (MsgType.InnerText) { case "event": responseContent = EventHandle(xmldoc);//菜單事件處理 break; case "text": responseContent = TextHandle(xmldoc);//文本消息處理 break; default: break; } } return responseContent; }########### ####TextHandle(xmldoc)處理方法程式碼如下:###############
/// <summary> /// 接受文本消息并回復(fù)自定義消息 /// </summary> /// <param name="xmldoc"></param> /// <returns></returns> public string TextHandle(XmlDocument xmldoc) { string responseContent = ""; XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); XmlNode Content = xmldoc.SelectSingleNode("/xml/Content"); if (Content != null) { if (Content.InnerText == "指定回復(fù)消息的自定義文本") { responseContent = string.Format(XMLTemplate.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "自定義回復(fù)消息內(nèi)容"); } } return responseContent; }#########到這裡實(shí)作功能的程式碼示範(fàn)已完畢,後邊其他的訊息處理模式也是根據(jù)這種方式在做交互,例如:接收/回覆文字訊息、###圖片###訊息、語(yǔ)音訊息、###影片###訊息、小視訊訊息、地理位置訊息、連結(jié)訊息等都可以參考以上程式碼進(jìn)行功能實(shí)現(xiàn)。 ###
以上是C#微信開(kāi)發(fā)之接收 / 返回文字訊息原理與實(shí)作方法的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

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

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