起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1203|回复: 1

[处理中3] weixin-java-tools中WxMpXmlMessage扩展问题

[复制链接]

24

主题

90

帖子

294

积分

中级会员

Rank: 3Rank: 3

积分
294
QQ
发表于 2016-8-17 00:24:55 | 显示全部楼层 |阅读模式
本帖最后由 大苏-3区 于 2016-8-17 00:32 编辑

我在开发微信智能硬件功能时候,遇到weixin-java-mp-1.1.4.jar 中的 WxMpXmlMessage 类中缺少了对下面微信消息元素 <DeviceType> ,<DeviceID>,SessionID>,<OpenID>的封装
  1. <xml>
  2.     <ToUserName><![CDATA[%s]]></ToUserName>
  3.     <FromUserName><![CDATA[%s]]></FromUserName>
  4.     <CreateTime>%u</CreateTime>
  5.     <MsgType><![CDATA[%s]]></MsgType>
  6.     <DeviceType><![CDATA[%s]]></DeviceType>
  7.     <DeviceID><![CDATA[%s]]></DeviceID>
  8.     <Content><![CDATA[%s]]></Content>
  9.     <SessionID>%lu</SessionID>
  10.     <MsgID>%lu</MsgID>
  11.     <OpenID><![CDATA[%s]]></OpenID>
  12. </xml>
复制代码
请问除了重写WxMpXmlMessage 之外的有没有其它更简便的方法,在原有消息路由处理环节,得到上述四个标记内的内容? 如下


  1. // 拦截内容为test的消息
  2. private void addTestRouter() {
  3.   WxMpMessageHandler handler = new WxMpMessageHandler() {
  4.    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService, WxSessionManager sessionManager) throws WxErrorException {
  5.     System.out.println("响应test指令********************");
  6.     WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content("成功收到测试指令").fromUser(wxMessage.getToUserName()).toUser(wxMessage.getFromUserName()).build();
  7. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  8. //////======>>>>>想在这里获得<DeviceType> ,<DeviceID>,SessionID>,<OpenID>四个值<<<<<====
  9. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10.     return m;
  11.    }
  12.   };
  13.   wxMpMessageRouter.rule().async(false).content("test").handler(handler).end();
  14.   
  15. }
复制代码
请高手赐教,谢谢!


QQ: 18239256

24

主题

90

帖子

294

积分

中级会员

Rank: 3Rank: 3

积分
294
QQ
 楼主| 发表于 2016-8-17 13:08:06 | 显示全部楼层
看来没有人顶!
我自己目前采用的方法是在

  1. <P>public void doResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException </P>
复制代码

中修改,遇到MsgType是device_event,就处理,然后中断后续的代码的消息路由。如果不是,就将消息交给原来的代码继续处理。

希望可以帮到有需要的人。
QQ: 18239256
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 19:19 , Processed in 0.111023 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表