Пример #1
0
        /// <summary>
        /// 解析消息基类
        /// </summary>
        /// <param name="jo">消息对象</param>
        /// <returns>返回消息基类</returns>
        private static RequestBaseMessage ParseBaseMessage(JObject jo)
        {
            string   toUserName, fromUserName, strMsgType;
            DateTime createTime;
            RequestMessageTypeEnum msgType;

            toUserName   = (string)jo["ToUserName"][CDATA_KEY];
            fromUserName = (string)jo["FromUserName"][CDATA_KEY];
            createTime   = Utility.ToDateTime((int)jo["CreateTime"]);
            strMsgType   = (string)jo["MsgType"][CDATA_KEY];
            if (string.IsNullOrWhiteSpace(toUserName))
            {
                throw new ArgumentNullException("ToUserName", "ToUserName为空。");
            }
            if (string.IsNullOrWhiteSpace(fromUserName))
            {
                throw new ArgumentNullException("FromUserName", "FromUserName为空。");
            }
            if (string.IsNullOrWhiteSpace(strMsgType))
            {
                throw new ArgumentNullException("MsgType", "MsgType为空。");
            }
            msgType = (RequestMessageTypeEnum)Enum.Parse(typeof(RequestMessageTypeEnum), strMsgType, true);
            return(new RequestBaseMessage(toUserName, fromUserName, createTime, msgType));
        }
Пример #2
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="request">HTTP请求</param>
 public RequestMessageHelper(HttpRequest request)
 {
     if (request != null)
     {
         this.request = request;
         //获取请求体内容
         string content = Utility.GetRequestContent(request);
         //获取消息加密类型
         encryptType = GetEncryptType();
         //如果已加密,解密消息
         string rawContent;
         if (encryptType == MessageEncryptTypeEnum.aes)
         {
             rawContent = DecryptMessage(content);
         }
         else
         {
             rawContent = content;
         }
         //解析消息
         if (!TryParse(rawContent, out message))
         {
             PublicAccount.Message.Insert(new Message(PublicAccount.MessageType.Exception,
                                                      string.Format("解析消息失败。\r\n地址:{0}\r\n未解密的消息:{1}\r\n解密之后的消息:{2}",
                                                                    request.RawUrl, content, rawContent)));
         }
         else
         {
             PublicAccount.Message.Insert(new Message(PublicAccount.MessageType.Exception,
                                                      string.Format("解析消息成功。\r\n地址:{0}\r\n未解密的消息:{1}\r\n解密之后的消息:{2}",
                                                                    request.RawUrl, content, message)));
         }
     }
     else
     {
         this.request = null;
         message      = null;
     }
 }