用户关注微信或者取消关注微信的时候,微信服务器会发送一个 post请求到微信配置中的URL地址中。可以提取其中 的数据判断是关注还是取消

推送XML数据包示例:

<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>

------------------------------------------------------------------------------------------------------------------------------

//1:总方法

 private void subscribe(){//1:得到发送过来的数据string inMessage = GetSendInMessage(Request);//2:获取xml中的数据WX_In_MessageParent wX_In = new WX_In_MessageParent(inMessage);//3:判断是否是订阅或取消订阅事件if (WX_in_MessageManager.getTagNameContent(inMessage, WX_In_Filed.Event.ToString()) != ""){//2:执行发送信息的方法Event(inMessage, wX_In);}}

//2: 引用方法

 private string GetSendInMessage(HttpRequestBase requestBase){using (Stream stream = requestBase.InputStream){//创建一个字节数字,用来保存读取的字符Byte[] postBytes = new Byte[stream.Length];//把传递过来的内容保存(读取)到postBytes字符数组中stream.Read(postBytes, 0, (Int32)stream.Length);//得到传递过来的内容。string postString = Encoding.UTF8.GetString(postBytes);return postString;}}

//3:类  WX_In_MessageParent

 public class WX_In_MessageParent{private string toUserName;private string fromUserName;private string createTime;private string msgType;private string msgId;public string ToUserName{get{return toUserName;}set{toUserName = value;}}public string FromUserName{get{return fromUserName;}set{fromUserName = value;}}public string CreateTime{get{return createTime;}set{createTime = value;}}public string MsgType{get{return msgType;}set{msgType = value;}}public string MsgId{get{return msgId;}set{msgId = value;}}/*通过构造函数来获取服务器发送过来的信息*/public WX_In_MessageParent(string requestStr){ToUserName = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.ToUserName.ToString());FromUserName = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.FromUserName.ToString());CreateTime = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.CreateTime.ToString());MsgType = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.MsgType.ToString());MsgId = WX_in_MessageManager.getTagNameContent(requestStr, WX_In_Filed.MsgId.ToString());}}

//4:事件

 private void  Event(string inMessage, WX_In_MessageParent WX_In){string eventName = WX_in_MessageManager.getTagNameContent(inMessage, WX_In_Filed.Event.ToString());switch (eventName){case "subscribe"://订阅Response.Write(WX_MessageCode.WX_Subscribe(WX_In));break;case "unsubscribe"://取消订阅WX_MessageCode.WX_UnSubscribe(WX_In);break;default:break;}}

//5:推送方法

 public static string WX_Subscribe(WX_In_MessageParent wxobj){WX_Out_MessageText wx_out = new WX_Out_MessageText(wxobj, "欢迎关注****");return wx_out.GetReturnStr();}
   public override string GetReturnStr(){//Content就是刚才传进来的数据,这个地方是调用的字段,类WX_In_MessageParent中的字段StringBuilder strbuff = new StringBuilder();strbuff.Append("<xml>");strbuff.Append("<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>");strbuff.Append("<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>");strbuff.Append("<CreateTime>" + CreateTime + "</CreateTime>");strbuff.Append("<MsgType><![CDATA[" + MsgType + "]]></MsgType>");strbuff.Append("<Content><![CDATA[" + Content + "]]></Content>");strbuff.Append("</xml>");return strbuff.ToString();}

写得比较散,不好全部拿出来,只取了核心的方法。


C#微信开发---用户关注微信号后公众号发送欢迎关注相关推荐

  1. easywechat微信开发系列(1):公众号网页授权

    准备工作: 1.已认证的服务号(apppid.appsecret.token.aes_key) 2.安全域名 3.已经用composer安装好easywechat 1.config/app.php 的 ...

  2. php判断是否已关注,php判断用户是否关注微信订阅号或公众号

    最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid.但是马上发现一个 ...

  3. 微信公众号项目(公众号关注登录网站)

    目录 文章目录 目录 资料地址 资料说明 课程内容 云盘资料概览 资料地址 微信公众号项目(公众号关注登录网站) 资料说明 项目是基于微信公众号完成的,需要学习公众号项目开发的同学,可以参考. 资料包 ...

  4. 微信公众号开发 - 配置表设计以及接入公众号接口开发

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

  5. 微信公众号开发(一):注册公众号,后台与微信连接

    开发者文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html 公众号注册:https://m ...

  6. 微信开发专题---7微信公众号订阅号与服务号的区别

    微信公众平台现在已分成订阅公众号和服务公众号两种类型.两者的区别大致如下: 一.目的不同 1.服务号: 旨在为用户提供服务. 2.订阅号: 为用户提供信息和资讯. 二.功能不同 服务号的功能 1.1个 ...

  7. 微信开发学习二 -- 微信开发入门(简单demo)

    一.微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器 ...

  8. 【PHP+微信开发】之微信扫码登录

    目录 一.数据表 二.获取token 三.生成二维码 四.扫码,并接收回调 五.检测二维码是否扫描成功 微信扫码登录总体说明:先获取token和ticket,通过微信生成二维码接口生成二维码,把二维码 ...

  9. php 微信开发 自动回复,laravel 微信开发-自动回复

    laravel 微信开发-自动回复 1.微信公众号的逻辑,用户关注了你的微信公众号后,假设用户发送了一条消息给你的公众号,实际上是先发送到腾讯的服务器上,腾讯把内容转成特定的xml格式,再转发到你指定 ...

  10. 通过微信开发测试号进行微信登录

    微信开发测试号进行微信登录 1.测试账号获取 1.微信进行注册https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&am ...

最新文章

  1. EmEdit选择多行内容
  2. python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
  3. 关于S/4HANA里Sales Office 和Sales Organization那些事儿
  4. ios签名软件_苹果企业签名常常掉怎样处理【苹果签名吧】
  5. 您应该考虑将应用程序升级到Spring 4的5个理由
  6. django后台多页面分页逻辑python代码
  7. Hibernate Session get()vs load()的区别
  8. Linux命令----cat
  9. 提交日期表单状态操作_奇怪的知识又增加了,表单还能查寝?
  10. 太极怎么用html写出来,如何用css实现太极图
  11. 将普通文章内容替换为微信图文消息符合的内容
  12. 浏览器可以用c语言编辑吗,如何在浏览器端运行c/c++语言编写的代码
  13. 后端处理方式:特殊格式时间转换(2020-11-27T02:58:41.000000Z)
  14. MongoDB笔记十四——启动配置详细讲解
  15. matlab和pspice,电力电子电路仿真---MATLAB和PSpice应用
  16. Vue.js的简单趋势图
  17. 用R进行文本分析初探——包含导入词库和和导入李白语句
  18. win8/win10微信QQ邮箱可登陆,浏览器显示无网络连接
  19. 嵌入式是什么 ?为什么要学好嵌入式呢?
  20. 前亚马逊产品经理:TikTok的真正优势,并不是算法

热门文章

  1. 国产化操作系统安装OpenJDK Icedtea插件
  2. CentOS7 快速搭建VNC Server 实现服务器远程控制台访问(Java Viewer)
  3. 智能家居APP使用指南
  4. 畅购第9天项目总结(Spring Security Oauth2 JWT)
  5. 《精益创业》读书笔记
  6. 下手重了,我把同事小刘的腿打断了...
  7. 项目播报 | 方正璞华×联影医疗,赋能医疗行业新升级!
  8. 如何让你的技术团队成员自觉工作
  9. Lucene.Net+盘古分词器(详细介绍)
  10. GPU编程3--GPU内存深入了解