新乡民调(来自息县民调) - 主标

RequestHandler.cs 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using CallCenter.Utility.Common;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Threading.Tasks;
  9. using System.Web;
  10. namespace CallCenter.Utility
  11. {
  12. public class RequestHandler
  13. {
  14. public RequestHandler(HttpContext httpContext)
  15. {
  16. Parameters = new Hashtable();
  17. this.HttpContext = httpContext ?? HttpContext.Current;
  18. }
  19. /// <summary>
  20. /// 密钥
  21. /// </summary>
  22. private string Key;
  23. protected HttpContext HttpContext;
  24. /// <summary>
  25. /// 请求的参数
  26. /// </summary>
  27. protected Hashtable Parameters;
  28. /// <summary>
  29. /// debug信息
  30. /// </summary>
  31. private string DebugInfo;
  32. /// <summary>
  33. /// 初始化函数
  34. /// </summary>
  35. public virtual void Init()
  36. {
  37. }
  38. /// <summary>
  39. /// 获取debug信息
  40. /// </summary>
  41. /// <returns></returns>
  42. public String GetDebugInfo()
  43. {
  44. return DebugInfo;
  45. }
  46. /// <summary>
  47. /// 获取密钥
  48. /// </summary>
  49. /// <returns></returns>
  50. public string GetKey()
  51. {
  52. return Key;
  53. }
  54. /// <summary>
  55. /// 设置密钥
  56. /// </summary>
  57. /// <param name="key"></param>
  58. public void SetKey(string key)
  59. {
  60. this.Key = key;
  61. }
  62. /// <summary>
  63. /// 设置参数值
  64. /// </summary>
  65. /// <param name="parameter"></param>
  66. /// <param name="parameterValue"></param>
  67. public void SetParameter(string parameter, string parameterValue)
  68. {
  69. if (parameter != null && parameter != "")
  70. {
  71. if (Parameters.Contains(parameter))
  72. {
  73. Parameters.Remove(parameter);
  74. }
  75. Parameters.Add(parameter, parameterValue);
  76. }
  77. }
  78. /// <summary>
  79. /// 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名
  80. /// </summary>
  81. /// <param name="key">参数名</param>
  82. /// <param name="value">参数值</param>
  83. /// key和value通常用于填充最后一组参数
  84. /// <returns></returns>
  85. public virtual string CreateMd5Sign(string key, string value)
  86. {
  87. StringBuilder sb = new StringBuilder();
  88. ArrayList akeys = new ArrayList(Parameters.Keys);
  89. akeys.Sort();
  90. foreach (string k in akeys)
  91. {
  92. string v = (string)Parameters[k];
  93. if (null != v && "".CompareTo(v) != 0
  94. && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
  95. {
  96. sb.Append(k + "=" + v + "&");
  97. }
  98. }
  99. sb.Append(key + "=" + value);
  100. string sign = CommonHelper.GetMD5(sb.ToString(), GetCharset()).ToUpper();
  101. return sign;
  102. }
  103. /// <summary>
  104. /// 输出XML
  105. /// </summary>
  106. /// <returns></returns>
  107. public string ParseXML()
  108. {
  109. StringBuilder sb = new StringBuilder();
  110. sb.Append("<xml>");
  111. foreach (string k in Parameters.Keys)
  112. {
  113. string v = (string)Parameters[k];
  114. if (Regex.IsMatch(v, @"^[0-9.]$"))
  115. {
  116. sb.Append("<" + k + ">" + v + "</" + k + ">");
  117. }
  118. else
  119. {
  120. sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">");
  121. }
  122. }
  123. sb.Append("</xml>");
  124. return sb.ToString();
  125. }
  126. /// <summary>
  127. /// 设置debug信息
  128. /// </summary>
  129. /// <param name="debugInfo"></param>
  130. public void SetDebugInfo(String debugInfo)
  131. {
  132. this.DebugInfo = debugInfo;
  133. }
  134. public Hashtable GetAllParameters()
  135. {
  136. return this.Parameters;
  137. }
  138. protected virtual string GetCharset()
  139. {
  140. return this.HttpContext.Request.ContentEncoding.BodyName;
  141. }
  142. }
  143. }