国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#微信開發之接收 / 返回文本消息

2020-01-24 00:47:12
字體:
來源:轉載
供稿:網友

接收 / 返回文本消息

①接收/返回文本消息原理說明

當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上,著手開發之前先行閱讀微信公眾平臺接收普通消息微信開發文檔,對微信的這種消息處理機制有一定了解之后再著手開發(微信開發接收普通消息開發文檔

注意點:

1、關于重試的消息排重,推薦使用msgid排重。

2、微信服務器在五秒內收不到響應會斷掉連接,并且重新發起請求,總共重試三次。假如服務器無法保證在五秒內處理并回復,可以直接回復空串,微信服務器不會對此作任何處理,并且不會發起重試。詳情請見“發送消息-被動回復消息”。

3、為了保證更高的安全保障,開發者可以在公眾平臺官網的開發者中心處設置消息加密。開啟加密后,用戶發來的消息會被加密,公眾號被動回復用戶的消息也需要加密(但開發者通過客服接口等API調用形式向用戶發送消息,則不受影響)。關于消息加解密的詳細說明,請見“消息加解密說明”。

 POST到開發者服務器上邊的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>

 接收消息數據包參數說明:

 返回文本消息的XML格式:

 <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好]]></Content></xml>

返回文本消息數據包參數說明:

②接收/返回文本消息代碼實現

開發者在自己服務器上邊接收微信服務器POST過來的XML數據包接收代碼如下:

if(IsPostBack){   //*********************************自動應答代碼塊*********************************  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);  }  //********************************自動應答代碼塊end*******************************}

注意:接收消息的時候要將消息格式轉化為“GBK”格式,否則后邊進行消息解析的時候沒辦法進行有效解析。

ReturnMessage()處理方法代碼如下:

/// <summary>/// 統一全局返回消息處理方法/// </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>/// 接受文本消息并回復自定義消息/// </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 == "指定回復消息的自定義文本")   {     responseContent = string.Format(XMLTemplate.Message_Text,       FromUserName.InnerText,       ToUserName.InnerText,       DateTime.Now.Ticks,       "自定義回復消息內容");   } } return responseContent;}

到這里實現功能的代碼演示已完畢,后邊其他的消息處理模式也是根據這種方式在做交互,比如:接收/回復文本消息、圖片消息、語音消息、視頻消息、小視頻消息、地理位置消息、鏈接消息等都可以參照以上代碼進行功能實現。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞西市| 淄博市| 漠河县| 二连浩特市| 丰原市| 德钦县| 琼海市| 江津市| 宝清县| 含山县| 禹州市| 上犹县| 湖口县| 洛浦县| 五常市| 历史| 宣恩县| 大英县| 马山县| 金阳县| 驻马店市| 社旗县| 中宁县| 蒙阴县| 临夏市| 南平市| 邳州市| 剑川县| 绩溪县| 芒康县| 游戏| 钟祥市| 宝鸡市| 肥乡县| 塔城市| 德令哈市| 且末县| 桂林市| 麻栗坡县| 双城市| 新密市|