C#实现调用第三方接口进行短信验证码验证
前言:
最近在做一个收费系统,正好有实现短信验证码进行验证的需求。因为收费系统的业务涉及到用户注册,忘记密码。尤其是忘记用户密码这个功能如果没有限制,任何人都可以对任意一个人的密码进行从新设置。不只是不安全的问题,而且大大的降低了用户的体验度。
下图是我对短信验证的理解,通过下面这个图可以很清晰的看清楚短信验证的逻辑。
实现流程图
界面
代码
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#实现调用第三方接口进行短信验证码验证相关推荐
- php 请求第三方接口发送短信验证码及注册手机号码
1:为什么要用短信验证码: 防范XSS和CSRF 2:php中怎样调用第三方接口(短信宝/京东万象/阿里云/容连云):post请求使用Curl();get请求使用file_get_contents() ...
- java短信通知_通过第三方接口发送短信验证码/短信通知(推荐)
需求:将首次交付密码为公共默认密码的方式改为点击入职功能,用短信方式发送系统自动生成的八位含数字.大小写字母和特殊符号生成的密码.短信发送服务由云通信http://www.yuntongxun.com ...
- 短信发送:webservice调用第三方接口发送短信
1 原博客地址:http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 2 demo地址:http://download.csdn.n ...
- 阿里巴巴第三方接口发送短信验证码
1.在阿里云注册accessKey 2.开通短信服务 3.管理审核 4.选择合适的sdk 5.相关参数demo 6. 7.pom导入依赖 8.编写代码 controller 结束 !
- java+调用飞信_java调用飞信接口发短信
java调用飞信接口发短信,看到挺好的,有利于大家做毕业设计加亮点,就发给大家了(新人发帖,不会发多个文件名,测试类就放这了) 需要这3个jar包: commons-codec-1.4.jar com ...
- JAVA飞信_java调用飞信接口发短信 - 贪吃蛇学院-专业IT技术平台
java调用飞信接口发短信,看到挺好的,有利于大家做毕业设计加亮点,就发给大家了(新人发帖,不会发多个文件名,测试类就放这了) 需要这3个jar包: commons-codec-1.4.jar com ...
- 安卓小项目之EveryDay(6)----使用第三方平台获取短信验证码
今天要实现的使用第三方平台获取验证码,值得高兴的是,完全免费哦,但是一个手机号12小时内只能发5条短信,我在录制视频时,已经将五条都用完了,于是找了他们的官方客服要了key和secret(客服很有耐心 ...
- python api调用 验证码_Python语言调用创蓝253短信验证码API文档
本文主要向大家介绍了Python语言调用创蓝253短信验证码API文档,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. #!/usr/local/bin/python #-*- c ...
- 关于调用阿里云短信服务接口实现短信验证码的过程
为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...
- 怎么样可以调用阿里云短信服务接口实现短信验证码
为了实现给手机发送短信来进行验证码验证,所以需要调用此接口来进行测试 登陆阿里云 首先需要有阿里云的账号,进行注册申请,进去控制台,然后找到短信服务 创建签名和模板 选中国内消息,然后看到右边有签名管 ...
最新文章
- #读书笔记 Android-Activity启动模式
- 杭电oj1384--Intervals(差分约束)
- Boost Asio总结(4) io_service
- 技术人的灵魂 3 问,阿里工程师如何解答?
- easyexcel根据模板写入_ProxmoxVE 之 创建win10基础镜像模板
- hasOwnProperty
- 一步步编写操作系统21 x86虚拟机bochs 跟踪bios
- Java 对用户密码加密(Jeecg 登录密码加密方式)MD5andDES方式
- JDK9的安装与配置
- XStream入门应用程序
- nRF24L01模块——基于Arduino
- Jmeter——控制器与取样器
- Android:根据阳历日期获取农历日期
- python 通信中间件_python 终极篇 ---- 中间件
- MySQL无法连接/端口被占用[解决记录]
- android ftp同步程序,ftp同步 安卓,安卓手机ftp上传下载文件功能同步视频照片
- Mac 强制退出程序方法
- 安装SDK MANAGER + Jetpack 4.5刷机
- A_A05_003 STC-ISP串口调试助手使用
- HDU 4950 Monster