From cad985ad629a7104b2a7e26157e06d670e1a1012 Mon Sep 17 00:00:00 2001 From: jinyu Date: Mon, 10 Aug 2015 08:39:59 +0800 Subject: [PATCH] u --- .../weixin4j/socket/WeixinMessageDecoder.java | 20 +++++++++---------- .../weixin4j/socket/WeixinRequestHandler.java | 5 ++--- .../weixin4j/xml/MessageTransferHandler.java | 19 +++++++++--------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java index 354fd23a..7b198df4 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinMessageDecoder.java @@ -44,7 +44,7 @@ public class WeixinMessageDecoder extends @Override protected void decode(ChannelHandlerContext ctx, FullHttpRequest req, List out) throws WeixinException { - String content = req.content().toString(Consts.UTF_8); + String messageContent = req.content().toString(Consts.UTF_8); QueryStringDecoder queryDecoder = new QueryStringDecoder(req.getUri(), true); String methodName = req.getMethod().name(); @@ -67,28 +67,28 @@ public class WeixinMessageDecoder extends String weixinId = parameters.containsKey("weixin_id") ? parameters.get( "weixin_id").get(0) : null; AesToken aesToken = aesTokenMap.get(weixinId); - String originalContent = content; String encryptContent = null; - if (!StringUtil.isBlank(content) && encryptType == EncryptType.AES) { + if (!StringUtil.isBlank(messageContent) + && encryptType == EncryptType.AES) { if (StringUtil.isBlank(aesToken.getAesKey())) { throw new WeixinException( "AESEncodingKey not be null in AES mode"); } - EncryptMessageHandler encrypt = EncryptMessageHandler - .parser(content); - encryptContent = encrypt.getEncryptContent(); + EncryptMessageHandler encryptHandler = EncryptMessageHandler + .parser(messageContent); + encryptContent = encryptHandler.getEncryptContent(); /** * 企业号第三方套件 ╮(╯_╰)╭ */ if (aesToken.getWeixinId().startsWith("tj")) { - aesToken = new AesToken(encrypt.getToUserName(), + aesToken = new AesToken(encryptHandler.getToUserName(), aesToken.getToken(), aesToken.getAesKey()); } - originalContent = MessageUtil.aesDecrypt(aesToken.getWeixinId(), + messageContent = MessageUtil.aesDecrypt(aesToken.getWeixinId(), aesToken.getAesKey(), encryptContent); } out.add(new WeixinRequest(methodName, encryptType, echoStr, timeStamp, - nonce, signature, msgSignature, originalContent, - encryptContent, aesToken, parameters)); + nonce, signature, msgSignature, messageContent, encryptContent, + aesToken, parameters)); } } 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 7514811d..b28f7993 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 @@ -110,9 +110,8 @@ public class WeixinRequestHandler extends .addListener(ChannelFutureListener.CLOSE); return; } - WeixinMessageTransfer messageTransfer = MessageTransferHandler.parser( - request.getOriginalContent(), aesToken, - request.getEncryptType()); + WeixinMessageTransfer messageTransfer = MessageTransferHandler + .parser(request); ctx.channel().attr(Consts.MESSAGE_TRANSFER_KEY).set(messageTransfer); messageDispatcher.doDispatch(ctx, request, messageTransfer); } diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java index ce51d2f4..9662d5cc 100644 --- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java +++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/xml/MessageTransferHandler.java @@ -11,10 +11,9 @@ import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; +import com.foxinmy.weixin4j.request.WeixinRequest; import com.foxinmy.weixin4j.socket.WeixinMessageTransfer; import com.foxinmy.weixin4j.type.AccountType; -import com.foxinmy.weixin4j.type.EncryptType; -import com.foxinmy.weixin4j.util.AesToken; import com.foxinmy.weixin4j.util.Consts; import com.foxinmy.weixin4j.util.StringUtil; @@ -83,21 +82,21 @@ public class MessageTransferHandler extends DefaultHandler { private static MessageTransferHandler global = new MessageTransferHandler(); - public static WeixinMessageTransfer parser(String xmlContent, - AesToken aesToken, EncryptType encryptType) throws RuntimeException { + public static WeixinMessageTransfer parser(WeixinRequest request) + throws RuntimeException { try { XMLReader xmlReader = XMLReaderFactory.createXMLReader(); xmlReader.setContentHandler(global); - xmlReader.parse(new InputSource(new ByteArrayInputStream(xmlContent - .getBytes(Consts.UTF_8)))); + xmlReader.parse(new InputSource(new ByteArrayInputStream(request + .getOriginalContent().getBytes(Consts.UTF_8)))); } catch (IOException e) { throw new RuntimeException(e); } catch (SAXException e) { throw new RuntimeException(e); } - return new WeixinMessageTransfer(aesToken, encryptType, - global.toUserName, global.fromUserName, - global.getAccountType(), global.msgType, global.eventType, - global.nodeNames); + return new WeixinMessageTransfer(request.getAesToken(), + request.getEncryptType(), global.toUserName, + global.fromUserName, global.getAccountType(), global.msgType, + global.eventType, global.nodeNames); } }