【微信平台】艺萌管家APP技术总结(二)——云片网发送短信验证码

一、前言

       随着时代的发展,验证码这种东西越来越普遍,任何一款软件都可以通过发验证码来提 高软件的安全,为了更好的达到实名制的效果,手机短信验证码开始走入了我们的生活,各种软件发送短信验证码。这个技术已经十分的普遍了,小编也在前一段时间内,接触了这个技术,下面分享给大家。

二、云片网介绍

       在介绍这个技术之前,我们要先介绍——云片短信平台
       云片网是一个第三方的短信服务平台,说道第三方就不可避免要付费了。所以发送短信也是要付费来的。
可能大家都比较关心下面几个问题:

  • 如何接入云片发送短信?

           首先在云片官网注册帐户,然后进入用户后台查看您的APIKEY,之后联系您网站的技术参考云片的 API文档,进行接入,调试成功后就可以使用云片发送短信了。
           在注册云片时,我们会送您10条测试短信,您可以用测试短信先进行测试。

  • 什么是图片验证码?为什么要加图片验证码?

       图片验证码是用来确认注册人是真实有效,并非机器。例如在购买火车票时,在提交订单前需选择图片来验证身份,这个就是典型的图片验证码。
加图片验证码的目的是为了防止轰炸软件的恶意攻击。

  • 云片的短信价格?

           短信按照套餐充值,价格详情,最低55元起充,不议价。如果月发送量超过10万条,可联系在线客服。

三、代码展示

         这里写图片描述  这里写图片描述

       下面小编用C#来给大家展示一下这个的核心的代码:

 string userid = "4933";
                    string account = "k000346";   //账号
                    string password = "pixmm1234"; //密码
                    string str = this.RndNum();
                    Context.Session["code"] = str;


                    string content = "注册验证码为:" + str + "【China广告邦】";
                    string sendTime = "";
                    Encoding myEncoding = Encoding.GetEncoding("UTF-8");

                    string param = "action=send&userid=" + userid + "&account=" + HttpUtility.UrlEncode(account, myEncoding) + "&password=" + HttpUtility.UrlEncode(password, myEncoding) + "&mobile=" + tel + "&content=" + HttpUtility.UrlEncode(content, myEncoding) + "&sendTime=" + HttpUtility.UrlEncode(sendTime, myEncoding) + "&mobilenumber=1&countnumber=1&telephonenumber=0";
                    byte[] postBytes = Encoding.ASCII.GetBytes(param);
                    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://xtx.telhk.cn:8080/sms.aspx");
                    req.Method = "POST";
                    req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
                    req.ContentLength = postBytes.Length;
                    using (Stream reqStream = req.GetRequestStream())
                    {
                        reqStream.Write(postBytes, 0, postBytes.Length);
                    }
                    System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
                    using (WebResponse wr = req.GetResponse())
                    {
                        StreamReader sr = new StreamReader(wr.GetResponseStream(), System.Text.Encoding.UTF8);
                        System.IO.StreamReader xmlStreamReader = sr;
                        xmlDoc.Load(xmlStreamReader);
                    }
                    if (xmlDoc == null)
                    {

                        Maticsoft.Common.MessageBox.Show(this, "发送失败,请检查您的手机号输入是否正确,或稍后重试~");
                    }
                    else
                    {
                        String message = xmlDoc.GetElementsByTagName("message").Item(0).InnerText.ToString();
                        if (message == "ok")
                        {
                            Maticsoft.Common.MessageBox.Show(this, "发送成功,请注意查收~");
                        }
                        else
                        {
                            Maticsoft.Common.MessageBox.Show(this, "发送失败,请检查您的手机号输入是否正确,或稍后重试~");
                        }
                    }

       生成随机的字母或数字:

  #region 生成随机的字母-王雷-2016年7月4日17:29:54
        /// <summary>
        /// 生成随机的字母
        /// </summary>
        /// <param name="VcodeNum">生成字母的个数</param>
        /// <returns>string</returns>
        private string RndNum()
        {
            string Vchar = "0,1,2,3,4,5,6,7,8,9";
            string[] VcArray = Vchar.Split(',');
            string VNum = ""; //由于字符串很短,就不用StringBuilder了
            int temp = -1; //记录上次随机数值,尽量避免生产几个一样的随机数

            //采用一个简单的算法以保证生成随机数的不同
            Random rand = new Random();
            for (int i = 1; i < 7; i++)
            {
                if (temp != -1)
                {
                    rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
                }
                int t = rand.Next(VcArray.Length);
                if (temp != -1 && temp == t)
                {
                    return RndNum();
                }
                temp = t;
                VNum += VcArray[t];
            }
            return VNum;

        } 
        #endregion

       如果想用其他语言的,请移步

四、小结

       通过这次的学习,刚做出来的时候,感觉真的很高大上,真的很有意思,通过手机验证码有更加的安全,可靠。很不错的技术,加油!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值