| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- using CallCenter.Utility.Common;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Web;
- namespace CallCenter.Utility
- {
- public class RequestHandler
- {
- public RequestHandler(HttpContext httpContext)
- {
- Parameters = new Hashtable();
- this.HttpContext = httpContext ?? HttpContext.Current;
- }
- /// <summary>
- /// 密钥
- /// </summary>
- private string Key;
- protected HttpContext HttpContext;
- /// <summary>
- /// 请求的参数
- /// </summary>
- protected Hashtable Parameters;
- /// <summary>
- /// debug信息
- /// </summary>
- private string DebugInfo;
- /// <summary>
- /// 初始化函数
- /// </summary>
- public virtual void Init()
- {
- }
- /// <summary>
- /// 获取debug信息
- /// </summary>
- /// <returns></returns>
- public String GetDebugInfo()
- {
- return DebugInfo;
- }
- /// <summary>
- /// 获取密钥
- /// </summary>
- /// <returns></returns>
- public string GetKey()
- {
- return Key;
- }
- /// <summary>
- /// 设置密钥
- /// </summary>
- /// <param name="key"></param>
- public void SetKey(string key)
- {
- this.Key = key;
- }
- /// <summary>
- /// 设置参数值
- /// </summary>
- /// <param name="parameter"></param>
- /// <param name="parameterValue"></param>
- public void SetParameter(string parameter, string parameterValue)
- {
- if (parameter != null && parameter != "")
- {
- if (Parameters.Contains(parameter))
- {
- Parameters.Remove(parameter);
- }
- Parameters.Add(parameter, parameterValue);
- }
- }
- /// <summary>
- /// 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名
- /// </summary>
- /// <param name="key">参数名</param>
- /// <param name="value">参数值</param>
- /// key和value通常用于填充最后一组参数
- /// <returns></returns>
- public virtual string CreateMd5Sign(string key, string value)
- {
- StringBuilder sb = new StringBuilder();
- ArrayList akeys = new ArrayList(Parameters.Keys);
- akeys.Sort();
- foreach (string k in akeys)
- {
- string v = (string)Parameters[k];
- if (null != v && "".CompareTo(v) != 0
- && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
- {
- sb.Append(k + "=" + v + "&");
- }
- }
- sb.Append(key + "=" + value);
- string sign = CommonHelper.GetMD5(sb.ToString(), GetCharset()).ToUpper();
- return sign;
- }
-
- /// <summary>
- /// 输出XML
- /// </summary>
- /// <returns></returns>
- public string ParseXML()
- {
- StringBuilder sb = new StringBuilder();
- sb.Append("<xml>");
- foreach (string k in Parameters.Keys)
- {
- string v = (string)Parameters[k];
- if (Regex.IsMatch(v, @"^[0-9.]$"))
- {
- sb.Append("<" + k + ">" + v + "</" + k + ">");
- }
- else
- {
- sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">");
- }
- }
- sb.Append("</xml>");
- return sb.ToString();
- }
- /// <summary>
- /// 设置debug信息
- /// </summary>
- /// <param name="debugInfo"></param>
- public void SetDebugInfo(String debugInfo)
- {
- this.DebugInfo = debugInfo;
- }
- public Hashtable GetAllParameters()
- {
- return this.Parameters;
- }
- protected virtual string GetCharset()
- {
- return this.HttpContext.Request.ContentEncoding.BodyName;
- }
- }
- }
|