reVersion", "1.0");
keyValues.Add("Timestamp", nowDate);
keyValues.Add("Format", "Json");//可换成xml
//2.业务api参数
keyValues.Add("Action", "SendSms");
keyValues.Add("Version", "2017-05-25");
keyValues.Add("RegionId", "cn-hangzhou");
keyValues.Add("PhoneNumbers", mobile);
keyValues.Add("SignName", SignName);
keyValues.Add("TemplateParam", "{\"code\":\"" + code + "\"}");
keyValues.Add("TemplateCode", templateCode);
keyValues.Add("OutId", "123");
//3.去除签名关键字key
if (keyValues.ContainsKey("Signature"))
{
keyValues.Remove("Signature");
}
//4.参数key排序
Dictionary<string, string> ascDic = keyValues.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value.ToString());
//5.构造待签名的字符串
StringBuilder builder = new StringBuilder();
foreach (var item in ascDic)
{
if (item.Key == "SignName")
{
}
else
{
builder.Append("&").Append(specialUrlEncode(item.Key)).Append("=").Append(specialUrlEncode(item.Value));
}
if (item.Key == "RegionId")
{
builder.Append("&").Append(specialUrlEncode("SignName")).Append("=").Append(specialUrlEncode(keyValues["SignName"]));
}
}
string sorteQueryString = builder.ToString().Substring(1);
StringBuilder stringToSign = new StringBuilder();
stringToSign.Append("GET").Append("&");
stringToSign.Append(specialUrlEncode("/")).Append("&");
stringToSign.Append(specialUrlEncode(sorteQueryString));
string Sign = MySign(AccessKeySecret + "&", stringToSign.ToString());
//6.签名最后也要做特殊URL编码
string signture = specialUrlEncode(Sign);
//最终打印出合法GET请求的URL
string url = string.Format("http://{0}/?Signature={1}{2}", endpoint, signture, builder);
string result = GetHtmlFormUrl(url);
return result;
}
/// <summary>
/// 短信接口C#调用方法
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private static string GetHtmlFormUrl(string url)
{
string strRet = null;
if (url == null || url.Trim().ToString() == "")
{
return strRet;
}
string targeturl = url.Trim().ToString();
try
{
HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);
hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
hr.Method = "GET";
hr.Timeout = 30 * 60 * 1000;
WebResponse hs = hr.GetResponse();
Stream sr = hs.GetResponseStream();
StreamReader ser = new StreamReader(sr, Encoding.UTF8);
strRet = MessageHandle(ser.ReadToEnd());
}
catch (Exception ex)
{
strRet = "短信发送失败!" + ex.Message;
}
return strRet;
}
/// <summary>
/// 验证手机号码是否合法
/// </summary>
/// <param name="mobile">电话号码</param>
/// <returns></returns>
public static bool IsMobile(string mobile)
{
return System.Text.RegularExpress |