wx-tools 接收微信服務器發(fā)來的消息

2023-03-22 17:18 更新

當你驗證服務器有消息成功后,微信服務器就會把你的公眾號任何事件和消息,以post請求推送到你驗證的那個url地址上。所以我們現(xiàn)在需要做的就是寫一個Post接收方法,來接收發(fā)來的消息~

2.4.1 完善WxController,添加Post接收方法

  1. @RestController
  2. @RequestMapping("/wx")
  3. public class WxController {
  4. private IService iService = new WxService();
  5. @GetMapping
  6. public String check(String signature, String timestamp, String nonce, String echostr) {
  7. if (iService.checkSignature(signature, timestamp, nonce, echostr)) {
  8. return echostr;
  9. }
  10. return null;
  11. }
  12. @PostMapping
  13. public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
  14. request.setCharacterEncoding("UTF-8");
  15. response.setCharacterEncoding("UTF-8");
  16. PrintWriter out = response.getWriter();
  17. try {
  18. // 微信服務器推送過來的是XML格式。
  19. WxXmlMessage wx = XStreamTransformer.fromXml(WxXmlMessage.class, request.getInputStream());
  20. System.out.println("消息:\n " + wx.toString());
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. } finally {
  24. out.close();
  25. }
  26. }
  27. }

可以看到,我把微信服務器發(fā)來的消息(request)的輸入流扔給了XStreamTransformer來幫忙解析XML,并返回WxXmlMessage類。

  • WxXmlMessage類是統(tǒng)一消息的載體。所有消息包括事件推送都包含在這個類當中。

嘗試與公眾號交互,觀察控制臺

這時候,我們可以嘗試向公眾號發(fā)送一句:“Hello”。我們看一下結果。

Message

wx-tools自動把發(fā)來的消息封裝成一個類,方便處理。

我們再試試接收并解析事件(Event)推送,例如:新用戶關注事件推送。

我用另一個微信號關注了一波我的測試號,觀察控制臺:

關注事件

好了,至此。你已經(jīng)成功一大半了。為什么呢!因為剩下的就是拿著這個消息(Message)去各種處理,最后返回給用戶想要的東西即可~

下篇會講一些路由器的使用方式,請移步下篇!嘻嘻

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號