我们需要响应微信发来的普通消息(Message)和事件推送(Event)。
一、接受和响应普通消息:
用于接受的消息对应org.easywechat.msg.req包中继承自BaseReqMsg的类,目前共有六种。
你的应用想要处理哪种类型的消息,就要在继承WeixinServletSupport的类中重写相应的方法。
消息类型涉及的对象需要重写的方法
1 文本消息TextReqMsg handleTextMsg(TextReqMsg msg)2 图片消息ImageReqMsg handleImageMsg(ImageReqMsg msg)3 语音消息VoiceRegMsg handleVoiceMsg(VoiceReqMsg msg)4 视频消息VideoReqMsg handleVideoMsg(VideoReqMsg msg)5 地理位置消息LocationReqMsg handleLocationMsg(LocationReqMsg msg)6 链接消息LinkReqMsg handleLinkMsg(LinkReqMsg msg)
以下面的程序为例进行讲解:
public class Wechat extends WeixinServletSupport {//Override getToken()@Overrideprotected BaseMsg handleTextMsg(TextReqMsg msg) {return new TextMsg("你说了:" + msg.getContent());}@Overrideprotected BaseMsg handleImageMsg(ImageReqMsg msg) {return new TextMsg("你发送的是图片信息");}}
上面的程序重写了handleTextMsg和handleImageMsg方法,表示其会对文本消息和图片消息进行处理并回应。
如果用户发送了其他类型的消息,例如一段声音,而上面的程序没有重写用于处理语音消息handleVoiceMsg方法。这时WeixinServletSuppport类就会调用handleDefaultMsg方法,该方法的默认行为是不向用户发送任何消息。当然,handleDefaultMsg方法也可以被重写:
@Overrideprotected BaseMsg handleDefaultMsg(BaseReqMsg msg) {String resp = "您发送的消息类型是:" + msg.getMsgType();return new TextMsg(resp);}
如果在第一个例子中加上上面这段代码,则程序会响应用户发送的所有类型消息。效果是:对于用户发送文本消息和图片消息,按照相应的handleXxx方法进行处理;对于用户发送的其他类型的消息,告诉用户消息类型。
二、接受和响应事件推送:
用于接受的事件对应org.easywechat.msg.req包中继承自BaseEvent的类。
接受事件推送与接受普通消息极为相似,就是重写相应的handleXxxEvent(XxxEvent event)方法
1 关注/取消关注事件
处理关注事件,需要重写handleSubscribe方法;
处理取消关注事件,需要重写handleUnsubscribe方法。
2 扫描带参数二维码事件 QrCodeEvent
需要重写handleQrCodeEvent方法。
3 上报地理位置事件 LocationEvent
需要重写handleLocationEvent方法。
4 自定义菜单事件 MenuEvent
处理点击菜单拉取消息时的事件推送,需重写handleMenuClickEvent方法;
处理点击菜单跳转链接时的事件推送,需重写handleMenuViewEvent方法。
与处理消息类似,如果事件推送在你的程序里没有找到相应的重写方法,那么会交给handleBaseEvent来处理,即不进行响应。
灿烂甜美!那一瞬的激-情绽放,催人奋进!胜利,永远属于为梦想奋斗的人新乐吧