コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
                    }
                }
            }
        }