wx-tools WxMessageInterceptor接口實(shí)現(xiàn)例子

2023-03-22 17:19 更新

WxMessageInterceptor(攔截器)功能與Matcher相同,用于過(guò)濾攔截,但是與Matcher最大的不同就是,它支持更復(fù)雜的業(yè)務(wù)處理,因?yàn)樗鼣y帶了IService和上下文context,可以利用這兩個(gè)參數(shù)進(jìn)行業(yè)務(wù)處理。

  • IService : 統(tǒng)一接口調(diào)用入口。
  • context :上下文,可以向handler傳遞參數(shù)。

WxMessageInterceptor攔截器接口,可以處理更加復(fù)雜的驗(yàn)證。例如身份驗(yàn)證,時(shí)效校驗(yàn)等等。

由于我的音樂(lè)爬蟲項(xiàng)目并沒(méi)有涉及到這么深的處理,所以這里只給出一個(gè)DemoInterceptor看看。


假設(shè)需求:只有用戶關(guān)注公眾號(hào)時(shí)長(zhǎng)大于3天才能參與活動(dòng)。

  • 創(chuàng)建DemoInterceptor.java 實(shí)現(xiàn) WxMessageInterceptor接口

/**
* Demo 攔截器,可以通過(guò)WxService做更加復(fù)雜的攔截,例如身份驗(yàn)證,權(quán)限驗(yàn)證等操作。
* @author antgan
*
*/
public class DemoInterceptor implements WxMessageInterceptor{


    public boolean intercept(WxXmlMessage wxMessage, Map context, IService wxService) throws WxErrorException {
        //可以使用wxService的微信API方法
        //可以在Handler和Interceptor傳遞消息,使用context上下文
        //可以實(shí)現(xiàn)自己的業(yè)務(wù)邏輯
        //這里就不編寫驗(yàn)證關(guān)注三天以上的用戶了
        if(/*用戶關(guān)注時(shí)長(zhǎng)大于3天*/){
            return true;
        }
        return false;
    }
}

  • 接下來(lái)你們都知道的,修改路由器規(guī)則,添加interceptor。

例如:

router.rule().matcher(new DemoMatcher()).interceptor(new DemoInterceptor()).handler(new DemoMessageHandler()).end();

搞定。接下來(lái)交給wx-tools去做吧~ 簡(jiǎn)單吧!

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)