8 changed files with 162 additions and 37 deletions
			
			
		@ -0,0 +1,81 @@ | 
				
			|||
using System; | 
				
			|||
using System.Collections.Generic; | 
				
			|||
using System.Text; | 
				
			|||
 | 
				
			|||
namespace Apewer.Run | 
				
			|||
{ | 
				
			|||
 | 
				
			|||
    public class Web | 
				
			|||
    { | 
				
			|||
 | 
				
			|||
        public Web() | 
				
			|||
        { | 
				
			|||
            // GetParameter(Json.Parse("{\"status\":2,\"after\":0,\"before\":0}"), "status");
 | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
        string GetParameter(Json data, params string[] names) | 
				
			|||
        { | 
				
			|||
            if (names == null || names.Length < 1) return null; | 
				
			|||
 | 
				
			|||
            var sameNames = new List<string>(); | 
				
			|||
            var lowerNames = new List<string>(); | 
				
			|||
            foreach (var name in names) | 
				
			|||
            { | 
				
			|||
                if (string.IsNullOrEmpty(name)) continue; | 
				
			|||
                sameNames.Add(name); | 
				
			|||
 | 
				
			|||
                var lower = TextUtility.ToLower(name); | 
				
			|||
                if (string.IsNullOrEmpty(lower)) continue; | 
				
			|||
                lowerNames.Add(lower); | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
            // POST 优先。
 | 
				
			|||
            if (data != null && data.IsObject) | 
				
			|||
            { | 
				
			|||
                var properties = data.GetProperties(); | 
				
			|||
                if (properties != null) | 
				
			|||
                { | 
				
			|||
                    // Json 区分大小写,先全字匹配。
 | 
				
			|||
                    foreach (var property in properties) | 
				
			|||
                    { | 
				
			|||
                        if (!property.IsProperty) continue; | 
				
			|||
                        if (sameNames.Contains(property.Name) && property.Value != null) | 
				
			|||
                        { | 
				
			|||
                            var value = property.Value; | 
				
			|||
                            if (value == null) continue; | 
				
			|||
                            var text = value.ToString(); | 
				
			|||
                            if (!string.IsNullOrEmpty(text)) return text; | 
				
			|||
                        } | 
				
			|||
                    } | 
				
			|||
 | 
				
			|||
                    // 以小写模糊匹配。
 | 
				
			|||
                    foreach (var property in properties) | 
				
			|||
                    { | 
				
			|||
                        if (!property.IsProperty) continue; | 
				
			|||
                        var lowerName = TextUtility.ToLower(property.Name); | 
				
			|||
                        if (lowerNames.Contains(lowerName) && property.Value != null) | 
				
			|||
                        { | 
				
			|||
                            var value = property.Value; | 
				
			|||
                            if (value == null) continue; | 
				
			|||
                            var text = value.ToString(); | 
				
			|||
                            if (!string.IsNullOrEmpty(text)) return text; | 
				
			|||
                        } | 
				
			|||
                    } | 
				
			|||
                } | 
				
			|||
            } | 
				
			|||
 | 
				
			|||
#if NETFX
 | 
				
			|||
            // NETFX 最后搜索 GET 参数。
 | 
				
			|||
            if (request.Url != null) | 
				
			|||
            { | 
				
			|||
                var value = GetParameter(request.Url, names); | 
				
			|||
                if (!string.IsNullOrEmpty(value)) return value; | 
				
			|||
            } | 
				
			|||
#endif
 | 
				
			|||
 | 
				
			|||
            return null; | 
				
			|||
        } | 
				
			|||
 | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
} | 
				
			|||
					Loading…
					
					
				
		Reference in new issue