C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
文章导读:
C#微信公众号接口开发之从零开发(一) 接入微信公众平台
微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们的绑定的地址上,通过解析XML数据,获取到微信用户发送的消息,让根据微信消息(文本:关键字,图片,语音等等)回复XML格式的数据给微信服务器,微信服务器再将接收到的消息返回给用户微信。
我们所需要做的:接收消息和返回消息
一、创建实体类
首先看文档http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html
微信发送过来的消息XML格式我们先创建一个实体类来解析XML数据 实体类根据后续开发增加
- /// <summary>
- /// 微信接口XmlModel
- /// XML解析
- /// </summary>
- public class WxXmlModel
- {
- /// <summary>
- /// 消息接收方微信号
- /// </summary>
- public string ToUserName { get; set; }
- /// <summary>
- /// 消息发送方微信号
- /// </summary>
- public string FromUserName { get; set; }
- /// <summary>
- /// 创建时间
- /// </summary>
- public string CreateTime { get; set; }
- /// <summary>
- /// 信息类型 地理位置:location,文本消息:text,消息类型:image
- /// </summary>
- public string MsgType { get; set; }
- /// <summary>
- /// 信息内容
- /// </summary>
- public string Content { get; set; }
- /// <summary>
- /// 地理位置纬度
- /// </summary>
- public string Location_X { get; set; }
- /// <summary>
- /// 地理位置经度
- /// </summary>
- public string Location_Y { get; set; }
- /// <summary>
- /// 地图缩放大小
- /// </summary>
- public string Scale { get; set; }
- /// <summary>
- /// 地理位置信息
- /// </summary>
- public string Label { get; set; }
- /// <summary>
- /// 图片链接,开发者可以用HTTP GET获取
- /// </summary>
- public string PicUrl { get; set; }
- /// <summary>
- /// 事件类型,subscribe(订阅/扫描带参数二维码订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件) 、SCAN(已关注的状态下扫描带参数二维码)
- /// </summary>
- public string Event { get; set; }
- /// <summary>
- /// 事件KEY值
- /// </summary>
- public string EventKey { get; set; }
- /// <summary>
- /// 二维码的ticket,可以用来换取二维码
- /// </summary>
- public string Ticket { get; set; }
- }
二、接收消息若成功返回提示消息
- /// <summary>
- /// 接收微信发送的XML消息并且解析
- /// </summary>
- private void ReceiveXml()
- {
- Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;
- byte[] requestByte = new byte[requestStream.Length];
- requestStream.Read(requestByte, , (int)requestStream.Length);
- string requestStr = Encoding.UTF8.GetString(requestByte);
- if (!string.IsNullOrEmpty(requestStr))
- {
- //封装请求类
- XmlDocument requestDocXml = new XmlDocument();
- requestDocXml.LoadXml(requestStr);
- XmlElement rootElement = requestDocXml.DocumentElement;
- WxXmlModel WxXmlModel = new WxXmlModel();
- WxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
- WxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
- WxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
- WxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText;
- switch (WxXmlModel.MsgType)
- {
- case "text"://文本
- WxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText;
- break;
- case "image"://图片
- WxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
- break;
- case "event"://事件
- WxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText;
- if (WxXmlModel.Event == "subscribe")//关注类型
- {
- WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
- }
- break;
- default:
- break;
- }
- ResponseXML(WxXmlModel);//回复消息
- }
- }
如图为我测试的情况:
只有微信请求我们的地址,我们返回去的xml消息才可以发送给微信用户,如图中公众账号回复了测试的文本消息,说明微信接收消息成功。
C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)的更多相关文章
- C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取
一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号 ...
- 微信公众号接口类(PHP版本)
[项目需求] 通过微信提供的接口,实现微信公众号与后端的应用程序数据交互.消息响应等功能. [项目疑难点] 理解接口工作方式,统一接口API,响应速度.安全性等 [代码举例] WeixinAp ...
- h5开发微信公众号重定向到关注页面没有关注按钮 (微信你个坑)
搜索微信公众号是这样的 微信公众号重定向到关注页面没有关注按钮 如何微信公众号重定向到关注页面没有关注按钮,请看上篇笔记 无解,微信一直在封这种通过链接跳转到公众号关注页面的方法.只有放个二维码提示长 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...
- 业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份
业务类接口在TCP,HTTP,BLL模式下的实例 设计模式混搭 附源码一份 WinForm酒店管理软件--框架这篇随笔可以说是我写的最被大家争议的随笔,一度是支持和反对是一样的多.大家对我做的这个行业 ...
- http80端口转发(实现微信公众号接口绑定IP时,同时支持多个公众号)
http80端口转发 背景 微信公众平台接口绑定服务器时,如果使用IP需要使用80端口,此组件可实现一个IP上绑定多个公众平台接口 使用方法 http://(IP)/WeixinMP/(转发的地址Ba ...
随机推荐
- struts action和jsp之间的传值
一.jsp对Action传值 提交表单即可,Action的属性必须和表单的标签名字相同 二.Action对jsp传值: (1)利用session,(个人推荐) action中ActionContext ...
- Struts2自定义类型转换,和处理类型转换错误
Struts2自定义类型转换: 从前台接受到的类型全部是字符串,Struts2自带的一些基本类型转换有时不能满足我们的特别需要,如:日期字符串输入格式,还有一些自定义的类,直接传到后台,我们需要一些自 ...
- HDU 1176 免费馅饼
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- WORD自定义宏
自定义快捷键 折叠所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命令—ColllapseAllHeadings 展开所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命 ...
- 误删ibdata1文件恢复方法
注意:以下演示过程前提为mysqld进程仍在运行中,否则无法使用下面演示过程进行恢复! 1.手工制造故障,删除ibdata1文件,注意不要重启mysql shell > rm -rf ibdat ...
- 理解GRUB2工作原理及配置选项与方法
GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的.GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时 ...
- 我的android学习经历39
关于像第一次进qq一样的那个渐变企鹅图的制作 渐变动画 package com.moonweather.app.activity; import com.moonweather.app.R; impo ...
- opengl视图变换 投影变换推导
视图变换在opengl中,视图变换的输入是:(1)眼睛位置(或者说相机位置)eys:(2)眼睛朝向的中心center,(就是眼睛朝哪里看);(3)头的方向up.任何一点经过视图变换后都会转化到眼睛坐标 ...
- 有限状态机(Python)
有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.FSM是一种算法思想,简单而言,有限状 ...
- [HIHO1052]基因工程(找规律)
题目链接:http://hihocoder.com/problemset/problem/1052 题意:中文题面,就是修改其中几个字符,使得[0,k-1]和[n-k,n-1]的字符相同. 会发现一个 ...