Beispiel #1
0
        private void DecodeBody(IRequest request)
        {
            Encoding encoding = null;

            if (request.ContentType != null)
            {
                string encodingStr = request.ContentType.Parameters["Encoding"];
                if (!string.IsNullOrEmpty(encodingStr))
                {
                    encoding = Encoding.GetEncoding(encodingStr);
                }
            }

            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            // process body.
            DecodedData data = _bodyDecoders.Decode(request.Body, request.ContentType, encoding);

            if (data == null)
            {
                return;
            }


            var request1 = (Request)request;

            request1.Form  = data.Parameters;
            request1.Files = data.Files;
        }
Beispiel #2
0
        public override string ToString()
        {
            var writeDecodedData = DecodedData.Replace("\n", "\\n");

            writeDecodedData = writeDecodedData.Replace("\r", "\\r");
            writeDecodedData = writeDecodedData.Replace("\t", "\\t");
            return($"DecodedData: {writeDecodedData};\t RestData: {RestData}");
        }
 public string GetDataAsString()
 {
     if (Payload != null)
     {
         return(Payload);
     }
     if (DecodedData != null)
     {
         Payload = DecodedData.ToString();
     }
     return(Payload);
 }
Beispiel #4
0
        /// <summary>
        /// 解析消息体
        /// </summary>
        /// <param name="request">请求消息</param>
        protected virtual void DecodeBody(IRequest request)
        {
            // 消息编码格式
            Encoding encoding = null;

            if (request.ContentType != null)
            {
                string encodingStr = request.ContentType.Parameters["Encoding"];
                if (!string.IsNullOrEmpty(encodingStr))
                {
                    encoding = Encoding.GetEncoding(encodingStr);
                }
            }

            // 默认UTF8编码
            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            // 由指定的消息体解析器解析消息体
            DecodedData data = _bodyDecoders.Decode(request.Body, request.ContentType, encoding);

            if (data == null)
            {
                return;
            }

            // 违反了里氏替换原则
            if (!(request is Request))
            {
                throw new InternalServerException("Request object has to derive from Request (sorry for breaking LSP).");
            }

            var r = (Request)request;

            r.Form  = data.Parameters;
            r.Files = data.Files;
        }
Beispiel #5
0
 /// <summary>
 /// Constructor with binary block data for encoding
 /// </summary>
 /// <param name="startAddress">start address of the block</param>
 /// <param name="bin">binary block data as source</param>
 public Parser(int startAddress, byte[] bin) : this()
 {
     DecodedData.AddData(startAddress, bin);
 }