今天是在吾索实习的第12天。我们在这一天中,基本实现了微信公众号的消息回复与自定义菜单的创建。
首先,是实现消息回复,其关键点如下:
- 读取POST来的数据流:Stream 数据流变量 = HttpContext.Current.Request.InputStream,并把其存入数组:数据流变量.Read(数组变量, 0, (int)数据流变量.Length) 后,再转换为字符串:string 字符串变量 = Encoding.UTF8.GetString(数组变量) 。
- 在数据流所转换成的字符串中获取XML中所需的节点:根节点.SelectSingleNode("//所要节点的名字").InnerText。
- 以XML文档格式向微信服务器返回消息,XML格式如下(以文本消息为例):
"<xml>"+
"<ToUserName><![CDATA[" + 用户账号 + "]]></ToUserName>"+
"<FromUserName><![CDATA[" + 开发者公众号 + "]]></FromUserName>"+
"<CreateTime>" + DateTime.Now.Ticks.ToString() + "</CreateTime>"+
"<MsgType><![CDATA[text]]></MsgType>"+
"<Content><![CDATA["+回复的内容+"]]></Content>"+
"</xml>";
另外,是创建自定义菜单,其关键点如下:
- 获取接口凭证access_token,发送请求给https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=开发者自己的APPID&secret=开发者自己的APPSECRET,即可获得access_token字符串。应注意的是,此字符串的有效期为两小时。
- 发送请求给https://api.weixin.qq.com/cgi-bin/menu/create?access_token=所获得的access_token。发送请求要应使用https协议。
- 以JSON格式编制具体自定义菜单的内容与功能。
在今天对微信公众号的二次开发中,也遇到一些小插曲。就是编制好自定义菜单的代码后,在微信公众号的开发者中心中按提交修改服务器配置时,一直出现“系统发生错误,请稍后再试”。我们以为这次试验又要以失败告终的时候,却奇怪的发现服务号中的自定义菜单已经创建成功了。我们又回到网站看了一下,发现URL仍然没改变,但过了不久,在查看一遍,发现URL居然变了,这就令我们觉得相当奇怪了。真不知道,是代码编写有问题,还是微信那边的问题,希望有发生类似情况的各位能帮忙指点迷津,谢谢!
2014-07-24 .NET实现微信公众号的消息回复与自定义菜单的更多相关文章
-
C#微信公众号开发 -- (六)自定义菜单事件之CLICK
微信公众号中当用户手动点击了按钮,微信公众号会被动的向用户发送文字消息或者图文消息. 通过C#微信公众号开发 -- (五)自定义菜单创建 我们知道了如何将CLICK类型的按钮添加到自己的微信公众平台上 ...
-
.NET微信公众号开发-2.0创建自定义菜单
一.前言 开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档. 接口文档地址:http://mp.weixin ...
-
.NET微信公众号开发-3.0查询自定义菜单
一.前言 前面我们已经创建好了我们的自定义菜单.那么我们现在要如何查询我们自定义的菜单.原理都是一样的,而且都是相当简单,只是接口地址文档换掉了. 2.0开始编码 同样我们首先创建好我的查询页面,在这 ...
-
C#微信公众号开发 -- (七)自定义菜单事件之VIEW及网页(OAuth2.0)授权
通俗来讲VIEW其实就是我们在C#中常用的a标签,可以直接在自定义菜单URL的属性里面写上需要跳转的链接,也即为单纯的跳转. 但更多的情况下,我们是想通过VIEW来进入指定的页面并进行操作. 举一个简 ...
-
C#微信公众号开发 -- (五)自定义菜单创建
公众号中,底部都是有自己定义的功能按钮,通过点击某个按钮来实现指定的业务逻辑操作. 下面就来说说这些按钮是怎样放到微信公众平台的,还是先来看看微信的官方解释: 请注意: 1.自定义菜单最多包括3个一级 ...
-
php 微信公众号图文消息回复的实现 与access_token
//代码如下 <?phpclass IndexAction extends Action { public function __construct(){ } public function i ...
-
C#实现微信公众号群发消息(解决一天只能发一次的限制)
经过几天研究网上的代码和谢灿大神的帮忙,今天终于用C#实现了微信公众号群发消息,现在整理一下. 总体思路:1.首先必须要在微信公众平台上申请一个公众号. 2.然后进行模拟登陆.(由于我对http传输原 ...
-
Java微信公众号安全模式消息解密
这篇文章主要为大家详细介绍了Java微信公众号安全模式消息解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.微信公众平台下载解密工具,导入项目中,根据demo解密消息 public stat ...
-
微信小程序结合微信公众号进行消息发送
微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...
随机推荐
-
MySQL用户名和密码问题
MySQL使用脚本的方法: source d:\datafilename.sql # mysql -uroot -p Enter password: ERROR 1045 (28000): Acces ...
-
XStream使用详解
1.Xstream介绍 (1)Xstream介绍 Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需 ...
-
360网站卫士推出google字体加速方案
最近,有网友反映称谷歌官网域名google.com.谷歌香港google.com.hk都打不开, ping了一下google.com和google.com.hk两个域名的服务器情况,最后ping出来的 ...
-
Leetcode题解(21)
62. Unique Paths 题目 分析: 机器人一共要走m+n-2步,现在举个例子类比,有一个m+n-2位的二进制数,现在要在其中的m位填0,其余各位填1,一共有C(m+n-2,m-1)种可能, ...
-
SOme USeful NOtes for MYself.
SOme USeful NOtes for MYself. B站神奇的频道(YouTube里同名):关于微积分/线代/梯度下降/DL等数学知识的理解,对理解DL很有帮助 https://space.b ...
-
环境部署(五):Linux下安装Gradle
Gradle是一个基于Apache的Ant和Maven的项目自动化构建工具,相比于Ant和Maven的局限性,Gradle可以更好的帮助管理项目中的差异.依赖.编译.打包.部署. 可以自定义满足自己需 ...
-
搭建Hexo博客(一)-创建Hexo环境
Hexo配合github,可以创建自己的博客.基本原理是使用Hexo生成静态页面,发布到github上.在本地需要搭建Hexo环境. 1.安装nodejs 下载并安装NodeJS,官网地址:https ...
-
搭建简易的WebServer(基于pyhton实现简易Web框架 使用socket套接字)
1. 使用web底层socket的方式实现简易服务器的搭建,用来理解学习 # 1.导入socket模块 import socket import re import gevent import sys ...
-
Zabbix4.0监控URL
一:新建群组 1.1:web monitor 二:新建模板 2.1:配置-模板-模板 2.3:创建应用集 配置-模板-web monitor-应用集 2.4:创建web场景 2.5:创建场景步骤: 以 ...
-
JavaScript if(x),==和===解析(翻译整理)
一.if()中的布尔判断 if ( Expression ) 表达式会通过ES5定义的ToBoolean方法强制把Expression 转换成布尔值. 数据类型 转换结果 Undefined fals ...