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

首頁(yè) 微信小程式 微信開(kāi)發(fā) C#微信開(kāi)發(fā)之接收 / 返回文字訊息原理與實(shí)作方法

C#微信開(kāi)發(fā)之接收 / 返回文字訊息原理與實(shí)作方法

Mar 16, 2017 pm 02:52 PM

本文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ō)明:

C#微信開(kāi)發(fā)之接收 / 返回文本消息原理與實(shí)現(xiàn)方法

?傳回文字訊息的XML格式:

#

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

C#微信開(kāi)發(fā)之接收 / 返回文本消息原理與實(shí)現(xiàn)方法

##傳回文字訊息封包參數(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)文章!

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

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72