asp.net webapi 发送手机验证码

#region 获取验证码

/// <summary>
/// 获取验证码
/// </summary>
/// <param name="tel">手机号码</param>
/// <returns></returns>
[Route("api/User/GetVarCode/")]
[HttpGet]
public VarCodeResult GetVarCode(string tel)
{
//产生随机验证码
Random r = new Random();
string temMsg = string.Empty;
temMsg = r.Next(0, 999999).ToString().PadLeft(6, '0');

var varcodemodel = context.varcode.SingleOrDefault(t => t.tel == tel);
if (varcodemodel != null)//有过验证码
{
//修改
varcodemodel.code = temMsg;
context.Entry(varcodemodel).State = EntityState.Modified;
context.SaveChanges();
}
else
{
//新增
varcode tempvarcode = new varcode();
string id = Guid.NewGuid().ToString("N");
tempvarcode.varcodeid = id;
tempvarcode.code = temMsg;
tempvarcode.tel = tel;
tempvarcode.createtime = DateTime.Now;
context.varcode.Add(tempvarcode);
context.SaveChanges();
}

#region 发送验证码
int flag = PubMethod.SendMsg(tel, temMsg);//???
if (flag == 1)
{
RedisManager.StringSet(tel, temMsg, new TimeSpan(0, 0, 120)); //有效期两分钟
return new VarCodeResult { ResCode = ResCode.Ok, VarCode = temMsg, ResMsg = "短信发送成功" };
}
else
{
return new VarCodeResult { ResCode = ResCode.SMSSendFail, ResMsg = "短信发送失败" };
}
#endregion
}
#endregion

 

 


#region 短信发送
/// <summary>
/// 263短信发送方法
/// </summary>
/// <param name="phone"></param>
/// <param name="content"></param>
public static int SendMsg(string phone, string content)
{
try
{
string un = "N5771158";//263用户
string pw = "97zlWE5fkd8f60";//263密码
//string phone = Model.MobilePhone;
//string content = Model.Smscode;
string postStrTpl = "un={0}&pw={1}&phone={2}&msg={3}&rd=1";
UTF8Encoding encoding = new UTF8Encoding();
byte[] postData = encoding.GetBytes(string.Format(postStrTpl, un, pw, phone, "【脸家】您好,您的验证码是:" + content));
System.GC.Collect();
HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(HHGKConstants.PostUrl);
myRequest.KeepAlive = false;
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = postData.Length;
myRequest.Timeout = 5000;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
if (myResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//LabelRetMsg.Text = reader.ReadToEnd();
logs.Debug("短信发送结果:" + reader.ReadToEnd());

myResponse.Close();
myRequest.Abort();
//Log.WriteTextLog("短信发送成功:" + phone + "," + content);
return 1;//短信发送成功
}
else
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
myRequest.Abort();
myResponse.Close();
//Log.WriteTextLog("短信发送失败 " + phone + "," + content);
//访问失败
logs.Debug("短信发送结果:" + reader.ReadToEnd());
return 0;//短信发送失败
}

}
catch (Exception ex)
{
logs.Error(ex);
}
return -1; //短信网关异常

}
#endregion

 

/// <summary>
/// 单条存值 并设置过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expire">过期时间间隔</param>
/// <returns></returns>
public static bool StringSet(string key, string value, TimeSpan expire)
{
try
{
using (var client = ConnectionMultiplexer.Connect(_conn))
{
return client.GetDatabase().StringSet(key, value, expire);
}
}
catch (Exception ex)
{
logs.Error(ex);
}
return false;
}

WebConfig:

<!-- 短信网关配置 -->
<add key="WebReference.Service.PostUrl" value="http://***" />
<add key="WebReference.Service.BalanceQueryUrl" value="http://*** " />

posted on 2019-06-12 15:14  *tfe*  阅读(294)  评论(0编辑  收藏  举报

导航