当前位置: 首页 > news >正文

教程: nodejs 做微信公众号开发,回复 xml 消息

教程: nodejs 做微信公众号开发,回复 xml 消息

首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 。此篇介绍的是如何获取用户发来的信息,并回复它。

一、接收 xml 信息内容

我用的是 nodejs 的 express 后台框架,这个用什么都无所谓哈。

我要说的是,它的 xml 信息内容既不在 req.body 中,也不在 req.query 中,也不在 req.params 中,这个看了别人的文章才知道它在这:

let xmlData = ''
req
    .on('data', data => {
        xmlData += data.toString()
/*                xmlData =
            `<xml><ToUserName><![CDATA[gh_44543146fe48]]></ToUserName>
            <FromUserName><![CDATA[oU9gc6M5bCiuL5rSfsCRn5djrtm0]]></FromUserName>
            <CreateTime>1673838891</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[这]]></Content>
            <MsgId>23963610449099327</MsgId>
            </xml>`*/
    })
    .on('end', () => {
        let receiveMsg = JSON.parse(xml2json.toJson(xmlData))

    })

你要做的判断逻辑放到 req.on('end') 中即可。

这里需要再提一点,需要使用 xml2json 插件,用于将 xml 转成 json 数据,好获取其内容,具体用法看这 xml2json usage。之后从微信服务器获取到数据就是这样:

在这里插入图片描述

二、回复消息

在向微信服务器回复信息的时候需要严格按照它的格式来,所以这里就只能使用 模板语法了。发送的时候将接收和发送者的位置调换即可。

    .on('end', () => {
        let receiveMsg = JSON.parse(xml2json.toJson(xmlData))
        console.log('received msg: ',receiveMsg)
        let responseMsg = `<xml>
                                <ToUserName><![CDATA[${receiveMsg.xml.FromUserName}]]></ToUserName>
                                <FromUserName><![CDATA[${receiveMsg.xml.ToUserName}]]></FromUserName>
                                <CreateTime>${new Date().getTime()}</CreateTime>
                                <MsgType><![CDATA[text]]></MsgType>
                                <Content><![CDATA[这是后台回复的内容]]></Content>
                            </xml>`
        console.log(responseMsg)
        res.send (responseMsg)
    })

结果就是:

在这里插入图片描述

相关文章:

  • 有没有什么免费网站/竞价开户
  • 网站建设班级通讯录/识图搜索在线 照片识别
  • 建设商城网站多少钱/爱网站查询
  • wordpress 转换 html/国外广告联盟平台
  • 宝洁公司网站做的怎么样/电商运营一天都干啥
  • 网站交换链接怎么做?/推广方式和推广渠道
  • 【web安全】——HTTP请求头注入
  • javaweb11 JavaBean、MVC架构、Filter过滤器、监听器、设置欢迎页面
  • JAVA开发(Netty框架与NIO)
  • 动态内存管理【C语言】
  • C++11 std::function 基础用法
  • 一个阶段小结
  • vue(透传属性,$attrs)
  • 在linux安装nginx
  • 《Buildozer打包实战指南》第三节 安装Buildozer打包所需的依赖文件
  • Retrofit源码分析实践(二)【Retrofit 免费的api测试工具引入】
  • Cadence PCB仿真使用Allegro PCB SI仿真参数单位配置与说明图文教程
  • 《和声学教程》学习笔记(四):属七和弦及其转位