微信公众号简单开发(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 ;消息链接 Url
                System.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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗理者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值