2、处理参数的类:
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 = MD5UtilHelper.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;
}
}










