/// <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; } } }
/// <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; } } }