前言

一切准备工作就绪时就先实现一个关注公众号后向客户端推送一条消息。关注后推送消息需要一个get请求、一个post请求,get请求主要是为了向微信服务器验证,post请求主要就是处理微信消息了。 调接口时传递的appid和appsecret请传递自己公众号对应的参数。

微信事件交互

微信事件交互主要是向微信服务器推送XML数据包

看效果

看代码

[HttpGet]

[ActionName("Index")]

public ActionResult Get(string signature,string timestamp,string nonce,string echostr)

{

if (CheckSignature.Check(signature, timestamp, nonce, token))

{

return Content(echostr);

}

else

{

return Content("err");

}

}

[HttpPost]

[ActionName("Index")]

public ActionResult Get(string signature, string timestamp, string nonce)

{

StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8);

XmlDocument doc = new XmlDocument();

doc.Load(sr);

sr.Close();

sr.Dispose();

WxMessage wxMessage = new WxMessage();

wxMessage.ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;

wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;

wxMessage.MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;

wxMessage.CreateTime = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText);

if (wxMessage.MsgType == "event")

{

wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;

if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe")

{

string content = "您好,欢迎访问garfieldzf8测试公众平台";

content = SendTextMessage(wxMessage, content);

return Content(content);

}

}

return Content("");

}

private string SendTextMessage(WxMessage wxmessage,string content)

{

string result = string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content);

return result;

}

public string Message

{

get

{

return @"

{2}

";

}

}

public class WxMessage

{

public string ToUserName { get; set; }

public string FromUserName { get; set; }

public long CreateTime { get; set; }

public string Content { get; set; }

public string MsgType { get; set; }

public string EventName { get; set; }

public string EventKey { get; set; }

}

总结

开发微信接口的过程中不能调试,唯一排除问题的方式就是在关键的地方记log。

微信事件交互主要是分析微信发送的xml数据包,解析xml,并按照消息指定格式拼接xml发送给response。在Get方法里用到的CheckSignature是盛派微信SDK的一个类,也就是对签名校验。

向客户端发送消息时主要ToUserName和FromUserName。我一开始把两个参数写反了导致客户端收不到消息。

c# 如何抓微信把柄_C#微信公众号开发--微信事件交互相关推荐

  1. 视频教程-SpringBoot微信公众号开发-微信开发

    SpringBoot微信公众号开发 就职于国内知名在线互联网旅游公司,10+互联网开发经验,精通前后端开发 刘志强 ¥149.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免 ...

  2. 视频教程-微信公众号开发-微信开发

    微信公众号开发 云知梦创始人,国际架构师,11年互联网培训和开发经验,曾在港电讯盈科.北大青鸟集团.远大教育.北京易第优教育等公司任职曾获得美国红帽RHCA构架师和RHCDS数据中心讲师,在国内排名第 ...

  3. 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友

    之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客 微信公众号开发–微信JS-SDK扫一扫功能 在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤 还详细介绍了通过config接口注 ...

  4. 微信公众号开发-----接送事件推送之关注/取消关注

    本文主要实现的功能包括 关注/取消关注事件 阅读本文之前请先认真阅读微信公众号技术文档之接受事件推送 需注意的是:验证消息的确来自微信服务器和接收事件时微信服务器都会发送请求到填写的服务器地址URL上 ...

  5. 微信小程序和公众号开发流程

    最近在公司参与微信小程序的开发,小程序近几年非常火,通过最近的学习分享一下开发微信小程序的流程 1.了解一下微信官方开发公众号文档 微信官方文档-公众号 对文档介绍有一个大致的印象,然后开始动手配置 ...

  6. 微信公众号开发-菜单事件推送

    菜单事件推送在微信公众号开发中也是属于比较常用的一个功能,就是用户点击菜单之后,微信会将事件推送给接口程序. 不过微信开发到现在也是老生常谈的的东西了,我就简单写一下菜单事件推送的这个过程. 注意:点 ...

  7. 微信公众号开发---微信开发学习路线(及供参考)

    目录(?)[-] 1.       热门学习 1.        微信支付之H5页面WAP端接入 2.        微信支付开发系统开发流程及完整Demo展示 3.        微信公共服务平台开 ...

  8. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  9. php公众号开发关注事件推送图文_PHP_微信公众平台开发关注及取消关注事件的方法,本文实例讲述了微信公众平台 - phpStudy...

    微信公众平台开发关注及取消关注事件的方法 本文实例讲述了微信公众平台开发关注及取消关注事件的方法.分享给大家供大家参考.具体分析如下: 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的 ...

  10. 微信公众号开发——微信获取、操作公众号文章

    微信获取,操作公众号文章 项目地址:https://gitee.com/wrzhxy/wx_article 我以为微信支付和微信企业付款文档就够坑爹了,直到我遇到了微信获取公众号文章... 微信获取公 ...

最新文章

  1. usaco letter game
  2. 他们翻遍用AI检测新冠的论文,一篇临床可用的也没有?!
  3. 机器学习自主解决安全威胁离我们还有多远?
  4. 七款最常用的PHP本地服务器
  5. 三只松鼠现“两只老鼠”:卖废纸箱发家致富??
  6. python报表自动化系列 - 译码:与Excel单元格索引对应的十进制数坐标
  7. C++ python 找标定圆点
  8. 人工智能ai算法_AI算法比您想象的要脆弱得多
  9. NumberFormat类
  10. (毕业设计资料)基于单片机智能液位水位监测控制系统设计
  11. ofo 成了一个披着「退押金」的电商导购平台?
  12. 移动硬盘无法访问怎么办?还能恢复数据吗?
  13. Cesium解决传感器抖动问题
  14. 计算机启动应用程序的方法,怎么启动Windows应用程序
  15. ai条码插件免安装_ai cs6条码插件 支持Illustrator cs6的条码生成脚本
  16. uni-app上传图片并添加水印
  17. selenium的webdrive驱动安装(谷歌浏览器)
  18. mysql1396错误
  19. 在带头结点单链表中查找最大值,将其与最后一个元素交换(交换值)
  20. 内网安全-arp欺骗,dns劫持钓鱼

热门文章

  1. 【BUG记录】百度人脸识别采集黑屏
  2. python读取excel指定行列_pandas读取excel指定行列索引header和index_col参数
  3. No relevant classes found. No output generated、metaObject连接错误
  4. 关于Google插件Postman的使用方法
  5. 数学知识在计算机专业中的应用,数学建模在计算机专业中的应用
  6. rpm方式安装MySQL5.1.73
  7. [原创] GSM/GPRS 以及CDMA区分以及相关模块选型
  8. Adobe (Acrobat)Reader 6.0以上版本支持对有特殊权限的PDF进行添加注释,填写标单以及保存的功能。...
  9. 验证手机号 身份证 中文名称
  10. 慎用window.showModalDialog()