本文为小编原创文章,首发于Java知识堂,一个原创度高、收藏度高、实用性强的微信公众号,一起成长、一起提高,欢迎关注
源代码
地址:
渲染
如果你不需要定制服务,只是想要推送一些文章,则不需要自己开发服务器,步骤1和步骤4就足够了。
本地测试下载解决外网访问内网问题
LZ 使用 -
下载链接:
LZ看了作者的博文后下载了Win版本并进行了设置
所以我将本地地址映射到
但中国人很真诚,所以我用了另一个
教程地址:
ngrok http 80
进入软件所在路径,在命令行中运行上述命令,这样会把一个外网地址映射到内网,但是每次重启域名都会变。
创建测试账户
地址:
并将在未来使用
url的内容是,其中//是接口名,因为是Boot项目,所以不用写项目名,随便写,主要是为了验证,点击提交会显示配置失败,因为还要启动本地服务,让微信完成验证
这是官方的验证声明:
开启本地服务,点击提交即可成功。
框架
api里有3个类,(get),(save and),(菜单管理,LZ只写了创建菜单的函数。查询和删除可以根据自己的需求来写)
bean 中有 1 个类需要保存
有一个类是与微信交互的接口
有4个类,(事件类型),(消息类型),(消息处理器),(默认消息处理器)
msg中有三种类型的类,是事件类型,in是接收消息的类型,out是发送消息的类型。
UI封装了菜单类和各种按钮类
util中有3个类: (微信验证的类)、 (发送get和post的类)、 (xml转为map的辅助类)
它是由UI包中的各种图形控件组成的界面。
整个想法
消息类的继承关系如图所示,接收的消息和发送的消息都继承一个基类,方便对消息进行统一处理。
将接收到的XML文件统一转换成map,根据type类型确定数据类型,再通过map构建消息类型,也就是工厂模式。并将各类消息的处理交给各类抽象函数,这样就实现了各类消息的处理。
消息构造完成后,会以 XML 文件的形式发送到微信公众平台。我知道的有两种方法可以处理,一种是使用库将 Java 对象转换为 XML 类型。这种方法每次都需要 new 一个对象,比较麻烦。我没有使用这种方法,而是重写了 () 函数。这样每次发送消息时,父类都会调用 () 函数,如下所示。但是对图文消息类型不太友好,LZ 很少用图文消息,所以我还是用 () 函数。
数据测试
地址如下:你可以检查一下返回的数据是否正确。