wx-tools 接收微信服務(wù)器發(fā)來(lái)的消息

2023-03-22 17:18 更新

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

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

@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;
    }


    @PostMapping
    public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();


        try {
            // 微信服務(wù)器推送過(guò)來(lái)的是XML格式。
            WxXmlMessage wx = XStreamTransformer.fromXml(WxXmlMessage.class, request.getInputStream());
            System.out.println("消息:\n " + wx.toString());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            out.close();
        }


    }
}

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

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

嘗試與公眾號(hào)交互,觀察控制臺(tái)

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

Message

wx-tools自動(dòng)把發(fā)來(lái)的消息封裝成一個(gè)類,方便處理。

我們?cè)僭囋嚱邮詹⒔馕鍪录‥vent)推送,例如:新用戶關(guān)注事件推送。

我用另一個(gè)微信號(hào)關(guān)注了一波我的測(cè)試號(hào),觀察控制臺(tái):

關(guān)注事件

好了,至此。你已經(jīng)成功一大半了。為什么呢!因?yàn)槭O碌木褪悄弥@個(gè)消息(Message)去各種處理,最后返回給用戶想要的東西即可~

下篇會(huì)講一些路由器的使用方式,請(qǐng)移步下篇!嘻嘻

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)