中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中怎么接收和返回文本消息

發布時間:2021-07-08 15:43:25 來源:億速云 閱讀:179 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關C#中怎么接收和返回文本消息,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

4.0接收 / 返回文本消息

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

當普通微信用戶向公眾賬號發消息時,微信服務器將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>

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

C#中怎么接收和返回文本消息

返回文本消息的XML格式:

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

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

C#中怎么接收和返回文本消息

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

開發者在自己服務器上邊接收微信服務器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;
}

看完上述內容,你們對C#中怎么接收和返回文本消息有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台前县| 宁蒗| 财经| 屏东县| 上思县| 扬中市| 柞水县| 泸溪县| 商洛市| 大石桥市| 湾仔区| 龙州县| 农安县| 安庆市| 聂拉木县| 吴江市| 化州市| 自治县| 军事| 疏附县| 城步| 延安市| 永仁县| 凤山市| 维西| 宜川县| 昭苏县| 德化县| 全南县| 竹北市| 湟源县| 兴山县| 赣榆县| 丹巴县| 无锡市| 大竹县| 辽中县| 蒲江县| 吴旗县| 长丰县| 丰原市|