今天是在吾索实习的第12天。我们在这一天中,基本实现了微信公众号的消息回复与自定义菜单的创建。

  首先,是实现消息回复,其关键点如下:

  1. 读取POST来的数据流:Stream 数据流变量 = HttpContext.Current.Request.InputStream,并把其存入数组:数据流变量.Read(数组变量, 0, (int)数据流变量.Length) 后,再转换为字符串:string 字符串变量 = Encoding.UTF8.GetString(数组变量) 
  2. 在数据流所转换成的字符串中获取XML中所需的节点:根节点.SelectSingleNode("//所要节点的名字").InnerText
  3. 以XML文档格式向微信服务器返回消息,XML格式如下(以文本消息为例):
1.    "<xml>"+
       "<ToUserName><![CDATA[" + 用户账号 + "]]></ToUserName>"+
       "<FromUserName><![CDATA[" + 开发者公众号 + "]]></FromUserName>"+
       "<CreateTime>" + DateTime.Now.Ticks.ToString() + "</CreateTime>"+
       "<MsgType><![CDATA[text]]></MsgType>"+
       "<Content><![CDATA["+回复的内容+"]]></Content>"+
       "</xml>";

  另外,是创建自定义菜单,其关键点如下:

  1. 获取接口凭证access_token,发送请求给https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=开发者自己的APPID&secret=开发者自己的APPSECRET,即可获得access_token字符串。应注意的是,此字符串的有效期为两小时。
  2. 发送请求给https://api.weixin.qq.com/cgi-bin/menu/create?access_token=所获得的access_token。发送请求要应使用https协议。
  3. 以JSON格式编制具体自定义菜单的内容与功能。

  在今天对微信公众号的二次开发中,也遇到一些小插曲。就是编制好自定义菜单的代码后,在微信公众号的开发者中心中按提交修改服务器配置时,一直出现“系统发生错误,请稍后再试”。我们以为这次试验又要以失败告终的时候,却奇怪的发现服务号中的自定义菜单已经创建成功了。我们又回到网站看了一下,发现URL仍然没改变,但过了不久,在查看一遍,发现URL居然变了,这就令我们觉得相当奇怪了。真不知道,是代码编写有问题,还是微信那边的问题,希望有发生类似情况的各位能帮忙指点迷津,谢谢!