阅读(4119) (0)

wx-tools WxMessageInterceptor接口实现例子

2017-01-28 13:15:18 更新

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去做吧~ 简单吧!