Exemple #1
0
        /// <summary>
        /// 分析request body
        /// </summary>
        /// <param name="requestData"></param>
        public void AnalysisBody(byte[] requestData)
        {
            var contentLen = this.ContentLength;

            if (contentLen > 0)
            {
                var positon   = this.Position;
                var totlalLen = contentLen + positon;
                this.Body = new byte[contentLen];
                Buffer.BlockCopy(requestData, positon, this.Body, 0, this.Body.Length);

                switch (this.ContentType)
                {
                case ConstString.FORMENCTYPE2:
                    using (MemoryStream ms = new MemoryStream(this.Body))
                    {
                        ms.Position = 0;
                        using (var sr = new SAEA.Common.StreamReader(ms))
                        {
                            StringBuilder sb  = new StringBuilder();
                            var           str = string.Empty;
                            do
                            {
                                str = sr.ReadLine();
                                if (str == null)
                                {
                                    break;
                                }
                                else
                                {
                                    sb.AppendLine(str);
                                    if (str.IndexOf(ConstHelper.CT) > -1)
                                    {
                                        var filePart = GetRequestFormsWithMultiPart(sb.ToString());

                                        if (filePart != null)
                                        {
                                            sr.ReadLine();

                                            filePart.Data = sr.ReadData(sr.Position, this.Boundary);
                                            if (filePart.Data != null)
                                            {
                                                filePart.Data = filePart.Data.Take(filePart.Data.Length - 2).ToArray();
                                            }
                                            if (this.PostFiles == null)
                                            {
                                                this.PostFiles = new List <FilePart>();
                                            }
                                            this.PostFiles.Add(filePart);
                                        }
                                        sb.Clear();
                                        sr.ReadLine();
                                    }
                                }
                            }while (true);
                        }
                    }
                    break;

                case ConstString.FORMENCTYPE3:
                    this.Json = Encoding.UTF8.GetString(this.Body);
                    break;

                default:
                    this.Forms = GetRequestForms(Encoding.UTF8.GetString(this.Body));
                    break;
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 分析request body
        /// </summary>
        /// <param name="requestData"></param>
        /// <param name="httpMessage"></param>
        public static void AnalysisBody(byte[] requestData, HttpMessage httpMessage)
        {
            var contentLen = httpMessage.ContentLength;

            if (contentLen > 0)
            {
                var positon = httpMessage.Position;

                var totlalLen = contentLen + positon;

                httpMessage.Body = requestData.AsSpan().Slice(positon, contentLen).ToArray();

                switch (httpMessage.ContentType)
                {
                case ConstHelper.FORMENCTYPE1:
                    httpMessage.Forms = GetRequestForms(Encoding.UTF8.GetString(httpMessage.Body));
                    break;

                case ConstHelper.FORMENCTYPE2:
                    using (MemoryStream ms = new MemoryStream(httpMessage.Body))
                    {
                        ms.Position = 0;
                        using (var sr = new SAEA.Common.StreamReader(ms))
                        {
                            StringBuilder sb  = new StringBuilder();
                            var           str = string.Empty;
                            do
                            {
                                str = sr.ReadLine();
                                if (str == null)
                                {
                                    break;
                                }
                                else
                                {
                                    sb.AppendLine(str);
                                    if (str.Contains(ConstHelper.CT))
                                    {
                                        var filePart = GetRequestFormsWithMultiPart(sb.ToString(), httpMessage);

                                        if (filePart != null)
                                        {
                                            sr.ReadLine();

                                            filePart.Data = sr.ReadData(sr.Position, httpMessage.Boundary);
                                            if (filePart.Data != null)
                                            {
                                                filePart.Data = filePart.Data.Take(filePart.Data.Length - 2).ToArray();
                                            }
                                            httpMessage.PostFiles.Add(filePart);
                                        }
                                        sb.Clear();
                                        sr.ReadLine();
                                    }
                                }
                            }while (true);
                        }
                    }
                    break;

                case ConstHelper.FORMENCTYPE3:
                default:
                    httpMessage.Json = Encoding.UTF8.GetString(httpMessage.Body);
                    break;
                }
            }
        }