天啦噜!微信公众号开发如此简单!竟然是因为……
当然是因为wx-tools啦!
springboot+wx-tools实践!音乐爬虫推送公众号DEMO
GitHub地址:wx-tools
最终DEMO源码地址: music_collector
先理一下大概的开发步骤:
- 创建一个Web工程(可以是Servlet/Spring Web/Spring boot)
- pom引入wx-tools / 手动引入wx-tools.jar包(可以去github下载自己build)
- 编写wx.properties配置文件
- 接入微信公众平台,验证服务器地址的有效性
- 实现自己的业务逻辑
简单吗?接下来一起写一个简单的Demo吧
1. 创建web项目
注意!本demo使用的是SpringBoot,如果你使用原生servlet,原理是一样的。这里就不再演示。
使用maven创建,或者在eclipse/IDEA创建web项目。
如何创建web项目,相信大家都会的了。就不详细介绍了。如果不会,自行度娘。
基于SpringBoot爬虫项目
这里我我基于springBoot创建了一个项目名为:music_collector
music_collector是一个爬虫项目,爬取各大音乐网的排行榜,并且可以支持设置关键字,来查询微信图文推送并推送给用户。(原理是通过搜狗搜索)
具体创建SpringBoot,这里就不赘述了。百度一下就知道了。
- 如果使用maven创建项目,指令如下:
mvn archetype:generate -DgroupId=wxtools.demo -DartifactId=demo -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=local
- 注意:此指令创建的web工程版本是2.3的,比较低。可以修改web.xml,变成3.0
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>demo</display-name>
</web-app>
引入wx-tools依赖
- maven地址(最新版本可以去中央库查询wx-tools)
<dependency>
<groupId>com.soecode.wx-tools</groupId>
<artifactId>wx-tools</artifactId>
<version>2.1.4-RELEASE</version>
</dependency>
注意:如果需要看源代码的务必手动修改编码。导入后记得修改jar包的编码。window下默认读GBK,而框架本身是UTF-8。
- 修改方式:在eclipse的工程下,对着jar包右键 --> Properties --> Encoding --> UTF-8
创建wx.properties配置文件
- 搭好项目基本框架后,在src/main/resources下新建wx.properties文件
#配置如下
wx.appId=你的appId
wx.appSecret=你的appSecret
wx.token=你设置的token
wx.aesKey=如果选择安全模式,需要填入。如果是明文模式,填空就好了
wx.mchId=商户ID
最终项目目录结构如下:
不要填错了哦!注意大小写。
2. 验证服务器地址的有效性
2.3.1 启动web服务
可以使用SpringBoot启动或者tomcat/jBoss都可以。
内网映射
微信开发需要把本地127.0.0.1映射到公网上,微信服务器才可以把消息推送给你的程序。
映射工具有很多,例如:花生壳、Ngrok等。这里使用了免费版的Ngrok。
ngrok客户端windows+64版
- 使用方法很简单:下载解压,双击打开,输入二级域名即可把本地127.0.0.1映射出去。
验证一下服务器的有效性
这时候,wx-tools下的所有api都可以调用了。
我们验证一下服务器的有效性。
验证接口官方文档 建议先看官方文档,理解好开发步骤,在继续下去。
- 编写WxController对接微信服务器
@RestController
@RequestMapping("/wx")
public class WxController {
private IService iService = new WxService();
@GetMapping
public String check(String signature, String timestamp, String nonce, String echostr) {
if (iService.checkSignature(signature, timestamp, nonce, echostr)) {
return echostr;
}
return null;
}
}
-
开启服务,然后去微信公众平台后台或者测试号后台填写资料验证即可。( 确保wx.properties与微信后台配置一致即可。)
-
打开微信配置后台:(这里我是用测试号的,还没有测试号的可以点击这里申请)