diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java index 6b83bca4..30371093 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java @@ -37,6 +37,7 @@ import com.foxinmy.weixin4j.socket.WeixinMessageTransfer; import com.foxinmy.weixin4j.util.ClassUtil; import com.foxinmy.weixin4j.util.HttpUtil; import com.foxinmy.weixin4j.util.ServerToolkits; +import com.foxinmy.weixin4j.xml.MessageTransferHandler; /** * 微信消息分发器 @@ -115,8 +116,11 @@ public class WeixinMessageDispatcher { * @throws WeixinException */ public void doDispatch(final ChannelHandlerContext context, - final WeixinRequest request, - final WeixinMessageTransfer messageTransfer) throws WeixinException { + final WeixinRequest request) throws WeixinException { + WeixinMessageTransfer messageTransfer = MessageTransferHandler + .parser(request); + context.channel().attr(ServerToolkits.MESSAGE_TRANSFER_KEY) + .set(messageTransfer); WeixinMessageKey messageKey = defineMessageKey(messageTransfer, request); Class targetClass = messageMatcher .match(messageKey); diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinMessage.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinMessage.java index 742333d1..d87e35f3 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinMessage.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/request/WeixinMessage.java @@ -59,7 +59,6 @@ public class WeixinMessage implements Serializable { private long createTime; /** * 消息类型 - * */ @XmlElement(name = "MsgType") private String msgType; @@ -75,7 +74,7 @@ public class WeixinMessage implements Serializable { private String agentId; public WeixinMessage() { - + // jaxb required } public WeixinMessage(String msgType) { diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java index 68d2848c..abdecafe 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinRequestHandler.java @@ -22,7 +22,6 @@ import com.foxinmy.weixin4j.util.AesToken; import com.foxinmy.weixin4j.util.HttpUtil; import com.foxinmy.weixin4j.util.MessageUtil; import com.foxinmy.weixin4j.util.ServerToolkits; -import com.foxinmy.weixin4j.xml.MessageTransferHandler; /** * 微信请求处理类 @@ -57,7 +56,7 @@ public class WeixinRequestHandler extends @Override protected void channelRead0(ChannelHandlerContext ctx, WeixinRequest request) throws WeixinException { - final AesToken aesToken = request.getAesToken(); + AesToken aesToken = request.getAesToken(); if (aesToken == null || (ServerToolkits.isBlank(request.getSignature()) && ServerToolkits .isBlank(request.getMsgSignature()))) { @@ -112,11 +111,7 @@ public class WeixinRequestHandler extends .addListener(ChannelFutureListener.CLOSE); return; } - WeixinMessageTransfer messageTransfer = MessageTransferHandler - .parser(request); - ctx.channel().attr(ServerToolkits.MESSAGE_TRANSFER_KEY) - .set(messageTransfer); - messageDispatcher.doDispatch(ctx, request, messageTransfer); + messageDispatcher.doDispatch(ctx, request); } private FullHttpResponse resolveResponse(HttpResponseStatus responseStatus, diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ServerToolkits.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ServerToolkits.java index 3e5d2ecc..19f4e57f 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ServerToolkits.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ServerToolkits.java @@ -31,7 +31,7 @@ public final class ServerToolkits { public static final String CONTENTTYPE$TEXT_PLAIN = "text/plain"; public static final AttributeKey MESSAGE_TRANSFER_KEY = AttributeKey - .valueOf("$_MESSAGETRANSFER"); + .valueOf("attr:MESSAGETRANSFER"); /** * 返回一个定长的随机字符串(包含数字和大小写字母)