如何实现下发手机短信验证码

如何实现下发手机短信验证码

    我们都遇到过这种情况,某个账号长时间没登录某天想要登录的时候,却发现密码早已忘记,这时候想要找回密码很可能就用到了手机短信验证的功能,在有些网站注册账号的时候往往也需要手机号码去验证,现在就来学习一下如何实现给手机下发短信的功能吧。
    要实现这个功能,我们需要借助第三方短信平台,我们给用户下发的短信就是通过第三方短信平台发送的,本文所实现的功能是借助于秒嘀科技平台实现的,先介绍一下我们需要在这个平台上做的准备工作吧。

1,准备工作

    秒嘀科技网址:http://www.miaodiyun.com/
    首先我们需要注册一个账号,登录之后,找到并记录下ACCOUNT SID和AUTH TOKEN。

这里写图片描述
    然后我们下一步需要做的就是建立一个短信模板了,也就是下发短信的格式,这个是需要平台审核通过之后才能用的,所以最好提前做这一步,不过审核只需几分钟也是挺快的,但是模板格式一定要符合要求,否则就只能审核未通过了,这点要注意。
这里写图片描述
    完成这些准备工作之后,我们就可以研究一下具体功能的实现了,平台上有提供参考文档。
这里写图片描述

2,功能实现

    代码注释比较详细,就直接上代码了。

package com.test.utils;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;import org.apache.commons.codec.digest.DigestUtils;/*** * @ClassName:SendTelMsgUtils* @Description:发送短信工具类* @author:QiXiaoQi* @date:2017-11-24下午11:20:23* @version V1.0*/
public class SendTelMsgUtils {/*** ACCOUNT_SID:开发者主账号ID(注册后自动生成)*/public static final String ACCOUNT_SID = "填写ACCOUNT SID";/*** AUTH_TOKEN:开发者账号认证密匙(注册后自动生成)*/public static final String AUTH_TOKEN = "填写AUTH TOKEN";/*** BASE_URL:请求地址*/public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";/*** RESP_DATA_TYPE:数据返回格式为JSON格式*/public static final String RESP_DATA_TYPE = "json";/*** randNum:生成的验证码随机数*/static String randNum = createRandNum();/*** smsContent:短信内容(短信签名+短信内容,注意要和配置的模板一致,否则报错)*/public static String smsContent = "【长城】您的验证码为"+randNum+",如非本人操作,请忽略此短信。";/*** * @Title:sendMsgTo* @Description:发送短信验证码* @param:* @return:String*/public static String sendMsgTo(String to) {/*** 获取时间戳 */String timestamp = getTimestamp();/*** 获取签名*/String sig = sig_MD5(ACCOUNT_SID + AUTH_TOKEN + timestamp);/*** 要提交的post数据*/String http_post = "accountSid="+ACCOUNT_SID+"&smsContent="+smsContent+"&to="+to+"&timestamp="+timestamp+"&sig="+sig+"&respDataType="+RESP_DATA_TYPE;OutputStreamWriter osw = null;BufferedReader br = null;StringBuffer sb = new StringBuffer();try {/*** 获取连接*/URL url = new URL(BASE_URL);/*** 打开连接*/URLConnection conn = url.openConnection(); /*** 设置连接参数*/conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000); conn.setReadTimeout(20000);/*** 提交数据*/osw = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");osw.write(http_post);osw.flush();/*** 读取返回数据*/br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";while((line = br.readLine()) != null) {sb.append(line);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}/*** * @Title:getTimestamp* @Description:获取时间戳* @param:* @return:String*/public static String getTimestamp() {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String date = sdf.format(new Date());return date;}/*** * @Title:sig_MD5* @Description:对"ACCOUNT_SID + AUTH_TOKEN + timestamp"进行MD5加密,* 这里使用的是apache.commons.codec.digest.DigestUtils;* 需要引入jar包:commons-codec-1.11.jar* 若apache.org找不到jar包可在* http://download.csdn.net/download/weixin_39175602/10132207* 下载,包含jar包和源码;* @param:* @return:String*/public static String sig_MD5(String str) {String sig_md5 = DigestUtils.md5Hex(str);return sig_md5;}/*** * @Title:createRandNum* @Description:生成一个6位的随机码* @param:* @return:String*/public static String createRandNum() {Random random = new Random();StringBuffer sb = new StringBuffer();for(int i = 0; i <= 5; i++) {String s = random.nextInt(10) + "";sb.append(s);}return sb.toString();}/*** * @Title:main* @Description:测试* @param:* @return:void*/public static void main(String[] args) {System.out.println("验证码是:" + randNum);String result = sendMsgTo("15827307043");System.out.println(result);}
}

注意:如果报错,请参考平台提供的一些报错解决方案,也非常欢迎一起交流学习啦^_^
这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47864.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之短信验证码

我们今天所使用的方案只是android手机设备集成短信验证码功能的方案之一。 我们所采用的方案是使用聚合数据的短信验证sdk。 程序的界面如下所示&#xff1a; 实现步骤&#xff1a; 1.到聚合数据官网上申请短信验证SDK数据&#xff0c;生成AppKey&#xff0c;如下图所示&…

零编程经验,通过 GPT-4 十分钟开发了一个浏览器插件,并成功运行,实现了需求目标!

大佬蓝鸟ID: sundyme 零编程经验&#xff0c;通过 GPT-4 十分钟开发了一个浏览器插件&#xff0c;并成功运行&#xff0c;实现了需求目标&#xff01;太不可思意了&#xff0c;真正体会到了自然语言编程的魅力&#xff01; 下一步是利用Pinterest 的 API 接口实现自动发图&…

prompt --基本使用场景 使用技巧

基本使用场景 & 使用技巧 AI 的使用场景非常多&#xff0c;基础篇仅介绍最最最常用的两种。后续会介绍更多使用场景和方法。 场景1&#xff1a;问答问题 这个场景应该是使用 AI 产品最常见的方法。以 ChatGPT 为例&#xff0c;一般就是你提一个问题&#xff0c;ChatGPT …

【Prompt使用场景】

Prompt使用场景 场景1:问答问题(技巧1)场景2:基于示例回答(技巧2)场景3:推理场景4:无中生有——写代码(技巧3)场景5:锦上添花——改写内容(技巧4)场景6:锦上添花——信息解释场景7:化繁为简——信息总结(技巧5)场景8:化繁为简——信息提取(技巧6)场景1:问…

亲子关系与家庭教育

亲子关系作为人生中第一重要的人际关系&#xff0c;对其一生的发展有着重要的影响。要了解亲子关系的作用&#xff0c;首先要了解亲子关系的特点。1亲子关系的不可替代性是以血缘关系为基础的关系&#xff0c;是与生俱来的、不可替代的&#xff0c;即其他关系&#xff0c;如师生…

家庭教育(一)

家庭教育(一) ✨为什么家长或教育者需要学习"家庭教育" 家庭教育包含 学习能力学习习惯亲子沟通目标激励情商培养性格天赋婚姻关系青春成长 大部分孩子会遇到的问题 学习不积极&#xff0c;没有兴趣&#xff0c;家长逼着学、哄着学写作业拖拉&#xff0c;行为散漫上…

卓训教育:家庭教育的重要性,家庭教育的理念及基本方法

家庭是儿童成长过程中接触到的最重要的活动场所,幼儿的家庭教育是人生成长过程中最先也是最重要的启蒙教育。家庭教育是指家庭中的父母对子女,成年人对未成年孩子进行教育生活的活动过程。 家庭教育的意义是幼儿在进入社会接受集体教育之前和集体教育的同时,保证孩子身心健…

详细软件著作权的申请

一&#xff0c;申请注册账号并进行实名认证 在中国版权保护中心官网注册账号。 我是自己申请的所以选择的个人&#xff0c;这里根据实际情况进行选择后注册。 注册后进行实名认证&#xff08;3-7个工作日人工会进行审核&#xff0c;所以每个著作权人都要提前注册并进行实名认证…

【全栈第一课】Vue快速入门

往期文章 【全栈第二课】微信小程序快速入门 【全栈第三课】通过ChatGPT快速入门NodeJS 【全栈第四课】TypeScript 入门教程 一、前端工程化 JS的复用就是模块化 UI样式复用就是组件化(LayUI里面的都是组件化) 所以说前端工程化就是有规范的写,不能你一个样式我一个样式,不…

猿辅导、作业帮忙“圈钱”,跟谁学、有道、51Talk狂“烧钱”,在线教育钱途在哪?

文/螳螂财经&#xff08;ID:TanglangFin&#xff09; 作者/王文文 2020年&#xff0c;诸行业艰难&#xff0c;本应受疫情利好的在线教育行业&#xff0c;也同样冰火两重天。在线教育头部企业纷纷上演融资大戏&#xff0c;动辄以“亿美元”为单位&#xff0c;行业头部机构垄断…

有没有和作业帮一样的计算机,学霸君、学习宝和作业帮哪个好【对比】

国内各种开发商自然会推出新应用&#xff0c;制作了很多可以解决各种科目作业的应用。学霸君、学习宝和作业帮哪个好&#xff1f;大家还记得当年的假期作业是怎么完成的呢?自己搞定?抄同学的还是直接不做呢?现在看起来&#xff0c;抄作业已经 OUT 了&#xff0c;在搜索引擎上…

作业帮家长版的计算机怎么打开,作业帮家长版安装方法 作业帮家长版app特色...

作业帮怎么安装?作业帮家长版是一款帮助想辅导自己孩子功课但缺无从下手的家长们设计的app。下面小编就为玩家带来作业帮家长版安装方法&#xff0c;一起来看看吧。 作业帮家长版安装方法 作业帮家长版是一款帮助想辅导自己孩子功课但缺无从下手的家长们设计的app。通过这款ap…

ChatGPT终于被我问到胡说八道的程度了!

问&#xff1a;Python是强类型语言&#xff0c;还是弱类型语言 chatgpt&#xff1a;Python是强类型语言。Python很少会隐式地转换变量的类型&#xff0c;所以Python是强类型的语言 问&#xff1a;什么是强类型语言 chatgpt&#xff1a;强类型语言是指在编程语言中&#xff0…

【FPGA协议篇】UART通信及其verilog实现(代码采用传参实现模块通用性,适用于快速开发)

UART通信 UART通信简介verilog实现顶层模块接收模块发送模块 仿真波形实测结果 UART通信简介 ​ 即通用异步收发器(Universal Asynchronous Receiver/Transmitter)&#xff0c;是一种串行、异步、全双工的通信协议。特点是通信线路简单&#xff0c;适用于远距离通信&#xff0…

echarts图表使用v-show控制图表显示不全的问题

最近做echarts图表时&#xff0c;因为涉及到使用开关变量控制不同图表的显示隐藏&#xff0c;用 v-if 时会出现没有获取到dom结构而报错&#xff0c;所以改用 v-show&#xff0c;但是 v-show 本身是结构已经存在&#xff0c;当数据发生变化时&#xff0c;结构并未重新渲染&…

插件ucharts制作图表,tooltip报错不展示数据

项目场景&#xff1a; uni开发小程序 使用插件ucharts制作图表&#xff0c;tooltip报错不展示数据 后端返回两组数据&#xff0c;前端渲染两条折线图。横坐标一样。第1组数据只有0-5月的数据&#xff0c;另2组1-12月均有。点击6-12月段数据的折线图&#xff0c;报错如下&…

Microsoft Excel 教程:如何在 Excel 中显示或隐藏图表图例?

欢迎观看 Microsoft Excel 教程&#xff0c;小编带大家学习 Microsoft Excel 的使用技巧&#xff0c;了解如何在 Excel 中显示或隐藏图表图例。 可以显示或隐藏图表的图例。 显示图例可以向读者提供更多图表信息&#xff0c;而隐藏图例可以让图表拥有更简洁的外观。 单击要在…

Qt 绘制图表 - Qt Charts版

一、前言 自从 Qt 发布以来&#xff0c;给广大跨平台界面研发人员带来了无数的福利。但是Qt自己却一直没有提供自带的图表库&#xff0c;这就使得 QWT、QCustomPlot 等第三方图表库有了巨大的生存空间&#xff0c;为了降低开发成本&#xff0c;大家都涌向了这些第三方库。这种…

Highcharts 饼图数据是0的时候不显示

Highcharts 数据为0 时饼图的扇形不显示。 echarts 数据为0时会平分各项 Highcharts 平分的方法是当所有项的数据都为0时&#xff0c;把各项的值改为1这样就能平分&#xff0c;但是选中显示的数据还是0&#xff0c;解决的方法是加一个标志然后配置tooltip 参考Highcharts mak…

让v-charts中的图例显示在图表的下方以及解决title不生效问题

效果图&#xff1a; 1、让v-charts中的图例显示在图表的下方&#xff1a; 在 <ve-line :data"chartData" :legend"legend" ></ve-line>添加legend属性 并在data中加上this.legend { bottom: "0" };这样就完美解决了 2、解决title…