using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Threading; using Sog; using SimpleHttpServer; namespace Operation { /// /// http请求参数列表 /// public class HttpQueryParams { public Dictionary m_map = new Dictionary(); public HttpQueryParams(string url, bool replaceAdd = true) { Parse(url, replaceAdd); } public HttpQueryParams() { } private void Parse(string url,bool replaceAdd = true) { if(url == null) { return; } int indexend = url.IndexOf('?'); string paramStr = url.Substring(indexend + 1, url.Length - (indexend + 1)); string[] allParams = paramStr.Split('&'); foreach(var param in allParams) { string[] namevalue = param.Split('='); if (namevalue != null && namevalue.Length >= 2) { TraceLog.Trace("HttpQueryParams.Parse namevalue[1] {0}", namevalue[1]); string value = ""; for (int i = 1; i < namevalue.Length; i++) { namevalue[i] = namevalue[i].Replace("+", "%20"); value += namevalue[i]; if(namevalue.Length > 2 & i != namevalue.Length - 1) { value += "="; } } value = Uri.UnescapeDataString(value); if (m_map.ContainsKey(namevalue[0])) { m_map[namevalue[0]] = value; //等同于 title=1654sdf } else { m_map.Add(namevalue[0], value); } } } } public string GetValue(string name) { if(m_map.ContainsKey(name)) { return m_map[name]; } return null; } public string GetValue(string name, string defaultValue = null) { if (m_map.ContainsKey(name)) { return m_map[name]; } return defaultValue; } public void AddNameValue(string name,string value) { if (m_map.ContainsKey(name)) { m_map[name] = value; } else { m_map.Add(name, value); } } public int Count { get { return m_map.Count; } } } }