微信公众号简单开发(10)链接消息
不想听我扯皮的,直接看官方:
微信官方的文档 :
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453
开发前说明:
我们需要用到 StreamReader
所以需要引用:using System.IO;
如果我们发现,我们的用户,发送 链接信息 到公众号。我们就针对 链接信息 进行处理。
首先我们看看官方文档。
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>1351776360</CreateTime><MsgType>< ![CDATA[link] ]></MsgType><Title>< ![CDATA[公众平台官网链接] ]></Title><Description>< ![CDATA[公众平台官网链接] ]></Description><Url>< ![CDATA[url] ]></Url><MsgId>1234567890123456</MsgId></xml>
参数 | 描述 |
---|---|
ToUserName | 接收方微信号 |
FromUserName | 发送方微信号,若为普通用户,则是一个OpenID |
CreateTime | 消息创建时间 |
MsgType | 消息类型,link |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
MsgId | 消息id,64位整型 |
现在正式讲开发
上面讲了一些微信给我们的规则
我们现在要用这些规则获取我们想要的东西。
第一步:获取那串 XML 这个是最重要的,因为没这个XML,我们就相当于啥都没有。(我们的信息来源就是这个XML)
这里我使用 StreamReader 来获取 Request.Body
因为XML主要是 Request.Body 里面的
//声明一个XML方便调用
string xml="";
//获取我们的流
var reader = new StreamReader(Request.Body);
//把流里面的读取出来,就是我们这串XML了。
var contentFromBody = reader.ReadToEnd();
//再保存进我们的这个字符串里,方便后期使用
xml = contentFromBody;
我们读取XML中的信息,并将其转成我们的微信信息对象。
这里呢。我借用了一位大佬的代码:
专门处理微信消息的几个类
第一个类:
MessageFromWeiXin:
第二个类:
ResponseClient:
这两个类,我就不放出来了。大家可以去上几篇文章看看,如果不想翻文章,请留下邮箱,或者直接联系我
有了这两个类,我们的东西就好开展了,如果大家有发现报错的话,是因为string扩展类的问题。需要的留下邮箱,这个东西太长了。不好发,不过大家应该都看的懂,自己写一套也好。
使用上面第二个类中的,这个方法,进行转换 : XmlToMessageFromWeiXin
得到我们 msg 对象
我们这个对象里面有msgtype,这个type枚举呢,就对应了各个事件。
我们写个switch就能将他们分开了。不同事件进入不同分支处理。
/// <summary>
/// 接收来自微信的消息
/// </summary>
[HttpPost]
[Route("api/WeChat")]
public string Post(string xml)
{System.Console.WriteLine("进入消息处理");var reader = new StreamReader(Request.Body);var contentFromBody = reader.ReadToEnd();System.Console.WriteLine($"xml:{contentFromBody}");xml = contentFromBody;try{var msg = ResponseClient.XmlToMessageFromWeiXin(xml);var Response = "";switch (msg.MsgType){case MessageFromWeiXinType.link:var link = (LinkMessageFromWeiXin)msg;//我们的链接呢,主要有 消息标题 Title ;消息描述 Description ;消息链接 UrlSystem.Console.WriteLine($"消息标题:{link.Title}\n消息描述:{link.Description}\n消息链接:{link.Url}\n");Response = "<xml> <ToUserName><![CDATA[" + link.FromUserName +"]]></ToUserName> <FromUserName><![CDATA[" + link.ToUserName +"]]></FromUserName> <CreateTime>" +ResponseClient.ConvertDateTimeToInt(DateTime.Now) +"</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[您发了一个 链接:标题:+link.Title+" , 地址: "+link.Url+" ,小女子已经帮您记录下来了]]></Content> </xml>";break;}return Response;// return "success";}catch (Exception ex){return "error";}
}
得到结果
关于大家还有些使用问题,有不懂的或需要代码的,留下邮箱
欢迎进qq群交流:704028989
微信公众号简单开发(10)链接消息相关推荐
- 微信公众号java开发:验证消息的确来自微信服务器
微信公众号开发,微信服务需要认证服务,官方文档如下: 引入jar包如下: <dependency><groupId>com.github.binarywang</grou ...
- 微信公众号简单开发(1)介绍流程
上一篇文章我们介绍了微信公众号开发需要用到一些id和密码之类的 如果还不清楚我们可以看看这篇文章 点我 : https://mp.weixin.qq.com/wiki?t=resource/res_m ...
- 微信公众号简单开发(6)图片消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(5)文本消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(7)语音消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(9)地理位置消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(4)普通消息
我们在接收微信普通消息的时候呀,我们会发现我们有很多种普通消息. 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id= ...
- 微信公众号简单开发(11)综合案例
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(8)视频消息 和 小视频消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
最新文章
- Java自带的常用工具
- linux为3种人准备了权限,linux的3种特殊权限
- 左右margin top问题百分比值
- visio 模板_盒图模板一键套用,便捷绘制精美盒图图表
- WebService部署时提示:HTTP错误 404.3-Not Found,如果该页面是脚本,请添加处理程序,如果应下载文件,请添加MIME映射
- php ajax jquery 表单重复提交,Jquery 防止Ajax重复提交权威解决方案
- MinIO部署快速入门
- 赛锐信息:集团化公司SAP权限管控解决方案
- springboot系列(三) 启动类中关键注解作用解析
- matlab2c使用c++实现matlab函数系列教程-normpdf函数
- BrcmPatchRAM 黑苹果WiFi无线网卡蓝牙驱动
- 西威变频器avo下载调试资料_西门子变频器使用BOP-2 面板调试 G120
- Cassandra启动过程详解
- Java面试官:java的跨平台原理
- 樊登读书搞定读后感_《读懂一本书:樊登读书法》读后感2
- CSS面试须知--选择器
- fx2n4ad模块中文手册_解析三菱特殊模块FX2N-4AD-PT详细说明及编程应用
- 单片机怎么通过按键控制计时器的开始和停止_超详细!51单片机寄存器功能一览表...
- Unable to locate tools.jar. Expected to find it in D:/jre6/lib/tools.jar问题解决
- python+beautifulsoup/xpath实现新浪微博某互粉好友全部好友圈微博爬虫
热门文章
- Android 自定义View实现炮弹射击小游戏
- [转载]UNICODE,GBK,UTF-8区别
- JS表白代码:“你好啊,小仙女”
- 慕课头条:马斯克要生孩子殖民火星;腾讯申请狗头商标;微软22年挂了所有日常实习生转正?
- 如何使用git下载Github代码
- 机器学习常用的评测指标Rank-n、Precision Recall、F-score、Map 、CMC、ROC Single shot 和Muti shot
- 【四二学堂】基于python+pygame的太空阻击游戏(python版带视频)
- 【工业互联网】新一代企业数字化整体架构下的工业互联网
- 键盘上各按键对应的英文名
- Python 分类导航