當(dāng)你驗(yàn)證服務(wù)器有消息成功后,微信服務(wù)器就會把你的公眾號任何事件和消息,以post請求推送到你驗(yàn)證的那個url地址上。所以我們現(xiàn)在需要做的就是寫一個Post接收方法,來接收發(fā)來的消息~
@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ù)器推送過來的是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ā)來的消息(request)的輸入流扔給了XStreamTransformer來幫忙解析XML,并返回WxXmlMessage類。
這時候,我們可以嘗試向公眾號發(fā)送一句:“Hello”。我們看一下結(jié)果。
wx-tools自動把發(fā)來的消息封裝成一個類,方便處理。
我們再試試接收并解析事件(Event)推送,例如:新用戶關(guān)注事件推送。
我用另一個微信號關(guān)注了一波我的測試號,觀察控制臺:
好了,至此。你已經(jīng)成功一大半了。為什么呢!因?yàn)槭O碌木褪悄弥@個消息(Message)去各種處理,最后返回給用戶想要的東西即可~
下篇會講一些路由器的使用方式,請移步下篇!嘻嘻
更多建議: