简介:本文为小编原创文章,首发于Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注源码GitHub地址:https://github.com/erlieStar/weChat效果图如果不需要定制化的服务,只是推送一些文 ...
本文为小编原创文章,首发于Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注源码GitHub地址:https://github.com/erlieStar/weChat 效果图如果不需要定制化的服务,只是推送一些文章的时候,没必要开发自己的服务器,步骤1和步骤4就足够了 本地测试下载ngrok,解决外网访问内网问题LZ用的是Sunny-Ngrok 下载地址:https://www.ngrok.cc/ LZ下载的是Win 64Bit版本,看了作者写的使用博客搭建好了 http://www.sunnyos.com/article-show-71.html 这样我就把本地的地址映射为http://erlie.free.ngrok.cc 不过国人的真心卡啊,果断用了另一个https://ngrok.com/ 教程地址:https://jingyan.baidu.com/article/f006222826c2bcfbd3f0c885.html ngrok http 80 进入软件所在路径,在命令行中运行上面的命令,这样就能把一个外网地址映射为内网,只不过每次重新启动域名会变 创建测试账号地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login appID和appsecret以后都会用到 url填写的内容是http://erlie.free.ngrok.cc/server/system,其中/server/system是接口名字,因为是Spring Boot项目,所以不用写项目名字,token随便写,主要用于验证作用。此时点提交会显示配置失败,因为你得把本地的服务启动起来,并且让微信完成校验 这个是官方写的验证说明: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 把本地的服务开启,点击提交就成功了 框架结构api中有3个类,AccessTokenApi(获取token),IdAndSecretApi(保存appId和appSecret),MenuApi(菜单管理,LZ只写了创建菜单的函数。查询,删除可按照自己需求写) bean中有1个类保存token controller中有1个类是和微信进行交互的接口 handler中有4个类,EventTypes(事件类型),MsgTypes(消息类型),MsgHandler(消息处理器),DefaultHandler(默认的消息处理器) msg中有3中类型的类,event包中是事件类型,in是接受消息的类型,out是发送消息的类型 ui封装了菜单类和各种按钮类 util中3个类,CheckUtil(微信校验的类),ResponseUtil(发送get和post的类),XMLUtil(将xml转为map的帮助类) MenuManager是用ui包中的各种图形控件,组成的界面 整体思路消息类的继承关系如图,收到的消息和发送的消息都继承一个基类,方便对消息进行统一的处理 收到xml文件统一转为map,在MsgHandler中根据type类型判断数据属于哪个类型,用map构造这个消息类型,即工厂模式。并且将各种消息的处理过程交给各种抽象函数,而DefaultHandler实现了对各种消息的处理 消息构造完毕往微信公众平台发送xml文件,我知道的有2种处理方式,一种是利用XStream库,将java对象转为xml类型,这种每次都得new对象,比较麻烦,我没有采用这种方法,而是重写了toString()函数,这样每次发送消息,由父类调用一下toString()函数即可,如下,但是对图文消息类型不怎么友好,LZ用图文消息比较少,所以还是用了toString()函数 数据测试地址如下:https://mp.weixin.qq.com/debug/,可以查看返回的各种数据是否正确 本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱qq2522407257。更多相关资讯,请到巅云www.rzxsoft.cn学习互联网营销技术请到巅云学院www.rzxsoft.cn。 |