You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.6 KiB
81 lines
2.6 KiB
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|