前言:
最近在做一个收费系统,正好有实现短信验证码进行验证的需求。因为收费系统的业务涉及到用户注册,忘记密码。尤其是忘记用户密码这个功能如果没有限制,任何人都可以对任意一个人的密码进行从新设置。不只是不安全的问题,而且大大的降低了用户的体验度。

下图是我对短信验证的理解,通过下面这个图可以很清晰的看清楚短信验证的逻辑。

实现流程图

界面

代码
UI(窗体代码)

 string code = "";//接受返回的验证码,用与对比。

获取验证码按钮

  //获取短信验证码SMSPhone sMSPhone = new SMSPhone();code= sMSPhone.getSMSCode(textBox1.Text);//接受生成的验证码,用于和用户收到的验证码进行对比。

验证按钮

  //判断验证码是否正确if (code.Equals(textBox2.Text)) {MessageBox.Show("验证码正确");}else{MessageBox.Show("验证码错误");}
*SMSPhone(类)*
 /**
* Namespace: 手机验证码测试
*
* Function: N/A
* Name: SMSPhone
*
* Ver       Time                     Author
* 0.10      2020/10/29 10:52:50           康世行
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Windows.Forms;namespace 手机验证码测试
{public   class SMSPhone{//存放验证码string yzm = "";string a = "1234567890";//用于生成随机验证码的源private string url = "http://106.ihuyi.com/webservice/sms.php?";//接口地址private string strUid = "在第三方接口网站申请";//用户IDprivate string strKey = "在第三方接口网站申请之后获得"; //开发者密钥,用于和用户ID配合去调用接口/// <summary>/// 获取验证码/// </summary>/// <param name="phone"></param>/// <returns></returns>public string getSMSCode(string phone) {//生成验证码//实例化一个随机数Random random = new Random();//循环六次得到一个随机的六位的验证码for (int i = 0; i <6; i++){yzm = yzm + a.Substring(random.Next(0,a.Length),1);}//判断手机号是否为空if (phone.Trim() != "") {//需要调用的链接和发送的内容url = "http://106.ihuyi.com/webservice/sms.php?method=Submit&account=" + strUid + "&password=" + strKey + "&mobile=" + phone + "&content=" + "您的验证码是:"+yzm+"。请不要把验证码泄露给其他人。";//调用请求接口的方法string Result = GetHtmlFromUrl(url);//判断是否发送成功MessageBox.Show(Result);}return yzm;}/// <summary>/// get方式请求http接口/// </summary>/// <param name="url">接口地址</param>/// <returns></returns>public string GetHtmlFromUrl(string url){string strRet = null;//判断链接是否为空或者nullif (url == null || url.Trim().ToString() == ""){return strRet;}//定义目标链接string targeturl = url.Trim().ToString();try{//http的特定实现,用于访问http接口HttpWebRequest hr = (HttpWebRequest)WebRequest.Create(targeturl);hr.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";//设置请求方法hr.Method = "GET";//验证码的有效时间30分钟hr.Timeout = 30 * 60 * 1000;WebResponse hs = hr.GetResponse();Stream sr = hs.GetResponseStream();StreamReader ser = new StreamReader(sr, Encoding.UTF8);strRet = ser.ReadToEnd();}catch (Exception ex){strRet = null;}return strRet;}}
}
 测试结果:

如果大家还有其他的实现方式欢迎交流,如果有永久免费的接口给推荐下更好。

C#实现调用第三方接口进行短信验证码验证相关推荐

  1. php 请求第三方接口发送短信验证码及注册手机号码

    1:为什么要用短信验证码: 防范XSS和CSRF 2:php中怎样调用第三方接口(短信宝/京东万象/阿里云/容连云):post请求使用Curl();get请求使用file_get_contents() ...

  2. java短信通知_通过第三方接口发送短信验证码/短信通知(推荐)

    需求:将首次交付密码为公共默认密码的方式改为点击入职功能,用短信方式发送系统自动生成的八位含数字.大小写字母和特殊符号生成的密码.短信发送服务由云通信http://www.yuntongxun.com ...

  3. 短信发送:webservice调用第三方接口发送短信

    1 原博客地址:http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 2 demo地址:http://download.csdn.n ...

  4. 阿里巴巴第三方接口发送短信验证码

    1.在阿里云注册accessKey 2.开通短信服务 3.管理审核 4.选择合适的sdk 5.相关参数demo 6. 7.pom导入依赖 8.编写代码 controller 结束 !

  5. java+调用飞信_java调用飞信接口发短信

    java调用飞信接口发短信,看到挺好的,有利于大家做毕业设计加亮点,就发给大家了(新人发帖,不会发多个文件名,测试类就放这了) 需要这3个jar包: commons-codec-1.4.jar com ...

  6. JAVA飞信_java调用飞信接口发短信 - 贪吃蛇学院-专业IT技术平台

    java调用飞信接口发短信,看到挺好的,有利于大家做毕业设计加亮点,就发给大家了(新人发帖,不会发多个文件名,测试类就放这了) 需要这3个jar包: commons-codec-1.4.jar com ...

  7. 安卓小项目之EveryDay(6)----使用第三方平台获取短信验证码

    今天要实现的使用第三方平台获取验证码,值得高兴的是,完全免费哦,但是一个手机号12小时内只能发5条短信,我在录制视频时,已经将五条都用完了,于是找了他们的官方客服要了key和secret(客服很有耐心 ...

  8. python api调用 验证码_Python语言调用创蓝253短信验证码API文档

    本文主要向大家介绍了Python语言调用创蓝253短信验证码API文档,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/local/bin/python #-*- c ...

  9. 关于调用阿里云短信服务接口实现短信验证码的过程

    为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...

  10. 怎么样可以调用阿里云短信服务接口实现短信验证码

    为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...

最新文章

  1. #读书笔记 Android-Activity启动模式
  2. 杭电oj1384--Intervals(差分约束)
  3. Boost Asio总结(4) io_service
  4. 技术人的灵魂 3 问,阿里工程师如何解答?
  5. easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
  6. hasOwnProperty
  7. 一步步编写操作系统21 x86虚拟机bochs 跟踪bios
  8. Java 对用户密码加密(Jeecg 登录密码加密方式)MD5andDES方式
  9. JDK9的安装与配置
  10. XStream入门应用程序
  11. nRF24L01模块——基于Arduino
  12. Jmeter——控制器与取样器
  13. Android:根据阳历日期获取农历日期
  14. python 通信中间件_python 终极篇 ---- 中间件
  15. MySQL无法连接/端口被占用[解决记录]
  16. android ftp同步程序,ftp同步 安卓,安卓手机ftp上传下载文件功能同步视频照片
  17. Mac 强制退出程序方法
  18. 安装SDK MANAGER + Jetpack 4.5刷机
  19. A_A05_003 STC-ISP串口调试助手使用
  20. HDU 4950 Monster

热门文章

  1. 谷歌地图的级别与对应比例尺及分辨率探究
  2. 12道 javaScript 经典逻辑题,是否承载着你的回忆
  3. 高等数学第六版上册答案
  4. PS去除图片白底制作微信表情包
  5. 如何在java中把两个PDF拼接到一个
  6. hutool工具私人学习笔记
  7. ADAPT-PT v8.0(房屋与停车场结构里的梁、板、楼板系统之先进后拉预力软件)
  8. Selenium下载PDF文件实战 2021-07-21
  9. FPGA控制ADF4351实现2MS的扫频操作
  10. 互联网黑产剖析——虚假号码