/// <summary> /// 读取request中的参数写入restparameter中 /// </summary> /// <typeparam name="WP"></typeparam> /// <param name="request"></param> /// <param name="wp"></param> public static void LoadEFFCRestParameters <WP>(this HttpRequest request, ref WP wp) where WP : RestParameter { if (wp == null) { wp = Activator.CreateInstance <WP>(); } RestParameter p = wp; request.LoadEFFCParameters(ref p); }
/// <summary> /// 读取request中的参数写入RestParameter中 /// </summary> /// <param name="request"></param> /// <param name="rp"></param> public static void LoadEFFCParameters(this HttpRequest request, ref RestParameter rp) { if (rp == null) { rp = new RestParameter(); } rp.MethodName = request.Method.ToLower(); var contenttype = ComFunc.nvl(request.ContentType).ToLower(); contenttype = contenttype == "" ? "text/plain" : contenttype; foreach (var item in request.Query) { rp[DomainKey.QUERY_STRING, item.Key] = item.Value.ToString(); } GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request contenttype:{contenttype}"); if (request.Method.ToLower() == "post" || request.Method.ToLower() == "put" || request.Method.ToLower() == "patch" || request.Method.ToLower() == "delete") { using (var stream = new MemoryStream()) { request.Body.CopyTo(stream); stream.Seek(0, SeekOrigin.Begin); if (contenttype.IndexOf("/json") > 0) { var sr = new StreamReader(stream); var str = sr.ReadToEnd(); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request content:{str}"); if (!string.IsNullOrEmpty(str)) { FrameDLRObject o = null; FrameDLRObject.TryParse(str, FrameDLRFlags.SensitiveCase, out o); if (o != null) { foreach (var k in o.Keys) { rp[DomainKey.POST_DATA, k] = o.GetValue(k); } } } rp.RequestContent = str; } //xml if (contenttype.IndexOf("/xml") > 0) { var sr = new StreamReader(stream); var str = sr.ReadToEnd(); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request content:{str}"); if (!string.IsNullOrEmpty(str)) { FrameDLRObject o = FrameDLRObject.CreateInstance(str, FrameDLRFlags.SensitiveCase); if (o != null) { foreach (var k in o.Keys) { rp[DomainKey.POST_DATA, k] = o.GetValue(k); } } } rp.RequestContent = str; } //multipart/form-data if (contenttype.IndexOf("multipart/form-data") >= 0) { var mp = ParseMultipartFormData(stream, Encoding.UTF8); stream.Seek(0, SeekOrigin.Begin); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request content:{new StreamReader(stream).ReadToEnd()}"); foreach (var k in mp.Keys) { if (mp.GetValue(k) is FrameUploadFile) { rp[DomainKey.UPDATE_FILE, k] = mp.GetValue(k); } else { rp[DomainKey.POST_DATA, k] = mp.GetValue(k); } } } if (contenttype.StartsWith("text/")) { var sr = new StreamReader(stream); var str = sr.ReadToEnd(); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request content:{str}"); if (!string.IsNullOrEmpty(str)) { var sarr = QueryHelpers.ParseQuery(str); if (sarr != null) { foreach (var k in sarr) { rp[DomainKey.POST_DATA, k.Key] = k.Value.ToString(); } } } } if (contenttype.IndexOf("application/x-www-form-urlencoded") >= 0) { var sr = new StreamReader(stream); var str = sr.ReadToEnd(); GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"request content:{str}"); if (!string.IsNullOrEmpty(str)) { var arrstr = str.Split('&'); if (arrstr != null) { foreach (var s in arrstr) { var items = s.Split('='); if (items != null && items.Length > 0) { rp[DomainKey.POST_DATA, items[0]] = items.Length > 1 ? ComFunc.UrlDecode(items[1]) : ""; } } } } rp.RequestContent = str; } } } }