第一句话都会这么去写:程序猿就是苦逼,除了开发还要会写博文!哎,继上次写了C#成为微信开发者后,博友们积极查看本篇博客,在此深表感谢。顺便报一下上篇博客的网址:http://www.cnblogs.com/chenwolong/articles/4344175.html#3142905,我写的博客,还是非常希望大家多多的进行评论,有问题,大家及时沟通。嘻嘻。步入正题,本次探讨下微信的发送消息和消息的回复机制。当然,懒虫们都希望要源代码,这里也会毫不保留的给大家奉上。嘻嘻。

接收消息原理如下图,参考网址:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

aaarticlea/png;base64,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nywpXb15giB4++23JyYmomUTqt9vvvnmtm3bBgcHfTOIF0f0nHz27NkVK1Y8+eST6lcrJ991111btmzx7WQAAABARE5Osen5QHhy9Q+u/dJ3/tsvP/xvv1z1fk3UV3Zcu/Lhf/Wlh/+7VU/8wU27Prd29x9tfu2/PP32+lfffeRXHzz99gcvnjl7ata9+uSTT+6///4gCJ577rnz58+riV/4whe2bNly9uxZNyc/8MADixcvLpVKpVJp+fLlxWKxVCpFrf3gBz8IguCnP/1pq9W60AmrRirqKCerIcqNRsNNnkePHg2C4KGH0uvwY2Nj5XI5CILt27dPT0+riVFUXrJkSXJd+tSpU8uXL1+/fr0+UczJt912W/JTytTmHDt2zN2c6enp7du3J0RlaxGxA+5Ed0VPPPHEypUrG42Gip3PPfecWqkYWRuNxvDwsDh+262ib9q0ac+ePfoU1Z/9+/dPTk7qyz711FOzqI1HVCPDw8PlUBAEt956q/p5fHx827Zt0YHQc7Iam/DWW2+JexgAAADwISen2PD0/y7G4K/+8HNrhq5Nft71jTs/d+POaze98n//9P3vfXTu3fc++sXz//LA46/e8siPVz343LJHnrup+uOv/+zt545/3Ow0M587d27VqlXf+973pqamjh079uCDD77//vvqXlzL4sWLT506dd11123cuPHSpUuXLl166KGHvvKVr1y6dEk19fHHHy9dujQIgvfee09NeeONN36UQcYnY2XPycPDw8uWLdu+fbuVspSJiQlVPk2+8fXAgQM33HCDSmtRSI5aOHny5Pr164Mg2Lp1q680PT4+Xq/XgyDQs6KbSFUG27dvX/Lm7N+/X6+s6lKjsi5jTnapx5h1KvmOa0W/P3lsbGzz5s1Lly7dv3+/e/Xk7NmzUZaenJwMgmDXrl3iCPbjx48HQWDFb3Wkjh07pt541Wo1CILHH39c/dpqtZrNZhAOy9dzshqbIL6dAAAAgATk5BR3PPPXs/7C5Ht+8r++8dvvHzt1eNcvvrn6kb/4h02/t+yRz67Yes2XvnfNl6vXrPzuNcsrn/3Hb/3+F+/9o007l+4b3nPy9MfZO/bmm29euHCh1Wqp2PDWW2+dP3/+5ZdfflZzzz33LF68WN2iGT3ieP369foDgVUxOdCeCH333XdniVLPP/98ln5mzMnDw8NLliwR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/O//49HR0Ww2e/r06cnJyfPnz/VXvXjx4uTk5OTk5MWLF5k1nJ6evrXz8+EO/S/fvPf8+fMq3y0AALggOhmVo5MFje/kzNQ2bGHtE52087DnzpOBREM6+cWLF9Pp9P79+/dib7/99l//8S/8C6WUUp8dvP7OO+8kT92/f386nWZS9vnz5/t/9ZsfVUqpT3/z3r38+h9873tf+FmllPrJX/Hfeuut3/u8+p//8I2jo6M3//JL4au+cffu0dHRa1/81Ke++NrR0VHYzA8ePAg3ur+//42NjyullPpXX/ne9+7evRs+zngZAICFoJNROTpZ0OROBurTkE4+PT19/T//j5aTIAT/8rdePz4+TiL23r17d+/e/btvfeEjSin1r3/3Bz+4p3nw4MGHH354enp6//79r/wHpdQnNjdvKaWU+olfe3U8fvXXwk7+gzt3/mH7c+H6/9dv/vj09DQeNc+x/vWDMmeGAwCACtHJqBydLKCT0U4N6eRknvzDH37100oppT72ytfeeOONMHQnk8kfvvwxpZRSn/7qD394//794+Pjh9/7vz5VNqs/9V/+/ujs7Cy85vnBgwfvvvvut77wSaWUUp8ZfOsLH1VKqZ8afOsL4TZubf/98fHx6elpNKD+yPp//fa3v5vz7W//1/WPKKXU53//H09OThZ9CAEAaBc6GZWjkwV0MtqpIZ2cePz48W9/JgzY3378+HH44MOH33slTNjPbB0dHQXa/bfCkD44OHj99cFaGsb/avB3f5ecGv3gwYOnT59+8MEHR0dHJycn5+fnL168ePDgwe99Xn3+91/1h5thJ/+u7//q59Snfv3Vo6MoquMTueegkwEAuH50MipHJwvoZLRT0zr56dOn/mY46f3pP/rnfz47Ozs7O7t79xufthfp2dnZo0ePfuezRrt+ctM/Pj5O/o/z9PT0nW+sK/XJ39idPHny5OnTp+++++4bb7zxox/96G//5Bc/Eqf1j370ozfeeOP+/funp6dpJzNPBgCgeehkVI5OFtDJaKemdfKzZ8+SKW7Ynx9++GF82fC/+ea9e/k7Zj19+jRa4CMf+R+UUmrN835CqY998bU7Sb6enp7+0R/9p1/4uFJKff73xm98+0uFFx5/5k8fPmSeDABAk9HJqBydLKCT0U5N6+Tz8/MHD5KzrP/Lw4cP33vve+F9pj/5y382nU4z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" alt="" />

其实原理很简单,就是用户向微信公众号发送一条消息时,微信官方服务器在接收到这条消息以后,会将此条消息封装成XML的数据包并以Post的方式推送给我们自己的服务器,也就是我们C#成为开发者时,填写的URL,即:一般处理程序。详情请参考上一篇博客:http://www.cnblogs.com/chenwolong/articles/4344175.html#3142905

在此,本人列举一种类型的消息:文本消息,其他几种消息原理相同,在此不做累述。嘻嘻,如下:

文本消息:推送到我们填写的一般处理程序(URL)的数据包格式如下:

<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>

aaarticlea/png;base64,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" alt="" />

在此,上述各种参数都是微信封装好发给我们的,特别是消息Id,有人曾经问我,消息Id怎么来的,我说:我也不知道,其实我们没必要知道,微信给我们推送了这些数据,我们只需会读取就行。
那么读取这些消息的方法怎么写呢?
其实很简单,在此多的不罗嗦,只需把代码复制就行了。
#region 获取接收事件推送的XML结构
/// <summary>
/// 获取接收事件推送的XML结构 例如:用户发送的文本消息,我们就会得到上述列举的XML结构
/// </summary>
/// <returns></returns>
public static XmlDocument GetMsgXML()
{
Stream stream = HttpContext.Current.Request.InputStream;
byte[] byteArray = new byte[stream.Length];
stream.Read(byteArray, , (int)stream.Length);
string postXmlStr = System.Text.Encoding.UTF8.GetString(byteArray);
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(postXmlStr);
return xmldoc;
} #endregion
上述红色字体中,大家会看到是以Post方式进行推送的,因此,在程序开口,我们应这样写:
#region 程序入口
/// <summary>
/// 程序入口
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{ context.Response.ContentType = "text/plain"; try
{
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "GET")
{
Auth(); //微信接入的测试 成为开发者第一步 详情请参考上一篇博客:http://www.cnblogs.com/chenwolong/articles/4344175.html#3142905
}
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
{
//创建菜单
if (!string.IsNullOrEmpty(accessToken))
{
responseMsg();
}
else
{
accessToken = IsExistAccess_Token();
responseMsg();
}
}
}
catch(Exception ex)
{
LogHelper.WriteLog("系统故障。", ex);
}
} #endregion
至于里面Get方式中的代码,详情请参考上一篇博客:http://www.cnblogs.com/chenwolong/articles/4344175.html#3142905
凡是看过微信公众平台开发者文档的人都知道,微信的任何一个接口,都会用到一个叫做Token的东西,在此,分享获取Token的方法如下:
#region 获取access_token
/// <summary>
/// 根据当前日期 判断Access_Token 是否超期 如果超期返回新的Access_Token 否则返回之前的Access_Token
/// </summary>
/// <param name="datetime"></param>
/// <returns></returns>
public static string IsExistAccess_Token()
{ string Token = string.Empty;
DateTime YouXRQ;//有效期
// 读取XML文件中的数据,并显示出来 ,注意文件路径
string filepath = HttpContext.Current.Server.MapPath(TokenXMLAdress); StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8);
XmlDocument xml = new XmlDocument();
xml.Load(str);
str.Close();
str.Dispose();
Token = xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText;
YouXRQ = Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText); if (DateTime.Now > YouXRQ)
{
DateTime _youxrq = DateTime.Now;
FirstAccess_Token();//重新获取Access_Token
xml.SelectSingleNode("xml").SelectSingleNode("Access_Token").InnerText = accessToken;
_youxrq = _youxrq.AddSeconds(7000);
xml.SelectSingleNode("xml").SelectSingleNode("Access_YouXRQ").InnerText = _youxrq.ToString();
xml.Save(filepath);
Token = accessToken;//刷新返回值
}
return Token;
} /// <summary>
/// 获取access_tokenaccess_token有效期目前为2个小时,需要定时去刷新,当调用微信公众平台的其他接口时,如果返回数值是:40001,即:获取access_token时AppSecret错误,或者access_token无效时,从新生成access_token
/// </summary>
/// <param name="Url">https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx624a3d3589940769&secret=d844f681fb40b7310745900bea4eff17</param>
public static void FirstAccess_Token()
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + GetXMLstr("appid") + "&secret=" + GetXMLstr("secret") + "");
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string Access_TokenJson = reader.ReadToEnd(); //获取的Json数据
JObject obj = JObject.Parse(Access_TokenJson);
accessToken = obj["access_token"].ToString();
}
}
#endregion

消息回复代码如下:

  public void responseMsg()
{ //生成二维码
//LogHelper.WriteLog(getusersummaryPostData("2015-03-01", "2015-03-03"));//{ "begin_date": "2015-03-01", "end_date": "2015-03-03"} XmlDocument EventOrNews_XML = GetMsgXML();
string content = "";//发送的内容
string errcodeMsg = "";//返回码
Dictionary<string, object> objUserInfo = new Dictionary<string, object>();//创建用户基本信息字典
string EventName = (object)EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("Event") == null ? "" : EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;//事件类型
string EventKey = (object)EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("EventKey") == null ? "" : EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;//事件KEY值,与自定义菜单接口中KEY值对应
string MsgType = (object)EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("MsgType") == null ? "" : EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;//消息类型 语音为voice 文本为 text
string UserOpenId = EventOrNews_XML.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;  if (!string.IsNullOrEmpty(EventName) && EventName.Trim().ToLower() == "subscribe")
            {
              
                content = "/:rose陈卧龙万岁万岁万万岁。";
               
            }             if (!string.IsNullOrEmpty(EventName) && EventName.Trim().ToUpper() == "SCAN")//扫描二维码事件 用户已关注时的事件推送
            {
              
            }             if (!string.IsNullOrEmpty(EventName) && EventName.Trim().ToLower() == "unsubscribe")
            {
             
            }
            if (!string.IsNullOrEmpty(MsgType) && MsgType.Trim().ToLower() == "voice")
            {
               
            }
            if (!string.IsNullOrEmpty(MsgType) && MsgType.Trim().ToLower() == "image")
            {
               
            }
            if (!string.IsNullOrEmpty(MsgType) && MsgType.Trim().ToLower() == "text")
            {
              
            }
            if (!string.IsNullOrEmpty(MsgType) && MsgType.Trim().ToLower() == "transfer_customer_service")
            {
              
            }
            if (!string.IsNullOrEmpty(EventName) && EventName.Trim().ToUpper() == "LOCATION")
            {
              
            }
}

注:本片博客中获取Token的方法,相信大家有很多疑问要问我,在此,不做解释,大家只需看一篇博客即可:http://blog.csdn.net/hechurui/article/details/22398849

本博客中牵涉到几个变量,如下:

#region 微信开发文档 参考
        //微信开发文档:http://www.cnblogs.com/wuhuacong/p/3613826.html
        //微信开发文档:http://blog.csdn.net/hechurui/article/details/22399421
        //Json.Net参考文档:http://www.360doc.com/content/13/0328/22/11741424_274568564.shtml
        #endregion
        public static string accessToken = null;
        public static string commUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=??自己的&secret=??自己的";
        WeiXinDB wxdb = new WeiXinDB();
       static string baiduAk = "O5R6ObuaqtaC1K9FUysGTbNx";//百度API 我的AK
        static string WX_application = "jiuyuantang007";//开发者微信号
        //
        public static string TokenXMLAdress = @"\CommonCS\XMLFile.xml";
        public static string Js_sdkXMLAdress = @"\CommonCS\XML_Ticket.xml";

不过,我将这些变量的值存在了XML文件中,大家只需把这些值拿出来就行了!还有最后一个方法,就是读取XML文件中的变量值的方法,如下:

#region XML KEY
/// <summary>
/// XML KEY
/// </summary>
/// <returns></returns>
public static string GetXMLstr(string Key)
{
string filepath = HttpContext.Current.Server.MapPath(WeiXin.TokenXMLAdress); StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8);
XmlDocument xml = new XmlDocument();
xml.Load(str);
str.Close();
str.Dispose();
string strValue = xml.SelectSingleNode("xml").SelectSingleNode(Key).InnerText;
return strValue;
}
#endregion

OK,至此,全部分享给了大家,希望大家多多评论,在此谢过。

有事情的QQ1429677330,或者TEL:18911695087,我很热心的哦。

												

微信消息回复C#的更多相关文章

  1. 微信公众平台开发(十) 消息回复总结——用其xml模板

    一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...

  2. 2014-07-24 .NET实现微信公众号的消息回复与自定义菜单

    今天是在吾索实习的第12天.我们在这一天中,基本实现了微信公众号的消息回复与自定义菜单的创建. 首先,是实现消息回复,其关键点如下: 读取POST来的数据流:Stream 数据流变量 = HttpCo ...

  3. PHP开发微信被动回复消息遇到的大坑

    最近开始做CMS后台与微信公众号的整合,在做被动回复消息时,按照官方文档的XML格式回复消息,总是提示"该公众号提供的服务出现故障,请稍后再试".但是通过微信提供的接口调试工具看我 ...

  4. Java微信公众平台开发(五)--文本及图文消息回复的实现

    转自:http://www.cuiyongzhi.com/post/43.html 上篇我们说到回复消息可以根据是否需要上传文件到微信服务器可划分为[普通消息]和[多媒体消息],这里我们来讲述普通消息 ...

  5. 基于PHP的微信公众平台开发(TOKEN验证,消息回复)

    微信公众平台开发 实现步骤: 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL).Token和EncodingAE ...

  6. 微信被动回复用户消息-文本消息-springmvc环境下自动生成xml

    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml springmvc - 大牛! private Object subscribeMessage(Scan scan) { Sca ...

  7. Java微信公众平台开发(八)--多媒体消息回复

    转自:http://www.cuiyongzhi.com/post/46.html 之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消 ...

  8. Java微信公众平台开发(七)--多媒体消息回复之图片回复

    之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消息的回复方法,[多媒体消息]包含回复图片消息/回复语音消息/回复视频消息/回复音乐消 ...

  9. C#开发微信门户及应用(2)--微信消息的处理和应答

    微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为计划的安排事情之一了.本系列文章希望从一个循序渐进的角度上,全面介绍微 ...

随机推荐

  1. 微信的User-Agent

    Mozilla/5.0 (Linux; U; Android 5.0.2; zh-cn; MI 2C Build/LRX22G) AppleWebKit/533.1 (KHTML, like Geck ...

  2. PHP文件操作 之打开远程文件

    //配置php.ini 开启allow_url_fopen选项 //访问的文件有可读或者可写的权限 //$f = fopen('http://www.example.com/a.txt','rb'); ...

  3. 大话数据结构(十)java程序——队列

    1.队列的定义 队列(queue):是只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 队列是一种先进先出的线性表,简称FIFO(First out firts in).允许插入的一头是队尾 ...

  4. hardware control language

    Computer Systems A Programmer's Perspective Second Edition We then provide some background on digita ...

  5. IMAP和POP3有什么区别

    http://help.163.com/10/0203/13/5UJONJ4I00753VB8.html?servCode=6010237 IMAP和POP3有什么区别?   POP3协议允许电子邮件 ...

  6. html EL表达式抬头

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:forE ...

  7. 软件的NABCD----安装部分

    N:需求 有些软件安装需要很多的插件,很很多的安装步骤,甚至文件夹移动等麻烦的步骤 A:做法 做成一键安装的程序 B:好处 默认D盘安装,节省C盘空间,没有赘余插件,一键安装,省时省力. C:竞争 和 ...

  8. Android Lint简介(转)

    转载自原文:http://blog.csdn.net/hudashi/article/details/8333349,感谢原作者. 英文原文:http://tools.android.com/tips ...

  9. (leetcode)Missing Number

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missin ...

  10. JS之相等操作符

    1.相等 == 和不相等 != 先转换操作数再比较相等性 在转换不同的数据类型时,相等和不相等遵循以下规则: 1.1 如果有一个操作数是布尔值,则在比较相等性前先将其转换为数值---false转换为0 ...