codecamp

wx-tools WxMessageInterceptor接口实现例子

WxMessageInterceptor(拦截器)功能与Matcher相同,用于过滤拦截,但是与Matcher最大的不同就是,它支持更复杂的业务处理,因为它携带了IService和上下文context,可以利用这两个参数进行业务处理。

  • IService : 统一接口调用入口。
  • context :上下文,可以向handler传递参数。

WxMessageInterceptor拦截器接口,可以处理更加复杂的验证。例如身份验证,时效校验等等。

由于我的音乐爬虫项目并没有涉及到这么深的处理,所以这里只给出一个DemoInterceptor看看。


假设需求:只有用户关注公众号时长大于3天才能参与活动。

  • 创建DemoInterceptor.java 实现 WxMessageInterceptor接口

/**
* Demo 拦截器,可以通过WxService做更加复杂的拦截,例如身份验证,权限验证等操作。
* @author antgan
*
*/
public class DemoInterceptor implements WxMessageInterceptor{


    public boolean intercept(WxXmlMessage wxMessage, Map context, IService wxService) throws WxErrorException {
        //可以使用wxService的微信API方法
        //可以在Handler和Interceptor传递消息,使用context上下文
        //可以实现自己的业务逻辑
        //这里就不编写验证关注三天以上的用户了
        if(/*用户关注时长大于3天*/){
            return true;
        }
        return false;
    }
}

  • 接下来你们都知道的,修改路由器规则,添加interceptor。

例如:

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

搞定。接下来交给wx-tools去做吧~ 简单吧!

wx-tools WxMessageMatcher接口实现例子
wx-tools 关于WxMessageRouter的详解
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }