如何实现下发手机短信验证码
来源:互联网 发布:练字 知乎 编辑:程序博客网 时间:2024/06/04 19:58
如何实现下发手机短信验证码
我们都遇到过这种情况,某个账号长时间没登录某天想要登录的时候,却发现密码早已忘记,这时候想要找回密码很可能就用到了手机短信验证的功能,在有些网站注册账号的时候往往也需要手机号码去验证,现在就来学习一下如何实现给手机下发短信的功能吧。
要实现这个功能,我们需要借助第三方短信平台,我们给用户下发的短信就是通过第三方短信平台发送的,本文所实现的功能是借助于秒嘀科技平台实现的,先介绍一下我们需要在这个平台上做的准备工作吧。
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 +"×tamp="+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); }}
注意:如果报错,请参考平台提供的一些报错解决方案,也非常欢迎一起交流学习啦^_^
阅读全文
0 0
- 如何实现下发手机短信验证码
- 手机短信验证码实现
- 手机短信验证码的实现
- 手机短信验证码的实现
- 如何防止恶意点击手机短信验证码
- 梦网科技--手机短信验证码实现
- javaweb实现手机短信验证码接口
- 手机短信验证码验证
- 手机短信验证码定时器
- PHP接口实现手机短信验证
- Java调用WebService接口实现发送手机短信验证码功能
- python 实现发送手机短信验证码后台方法
- Java调用WebService接口实现发送手机短信验证码功
- Java调用WebService接口实现发送手机短信验证码功能
- 基于mob平台,手机短信验证码实现登录功能
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能
- 重磅干货 | AI产品经理需要了解的语音交互评价指标
- php中通过redis实现接口限速
- 企服三会·PPT | 中国软件网曹开彬:洞见2018中国移动办公趋势洞察报告
- Week01_day04 循环语句即break和continue区别
- Near-Online Multi-target Tracking with Aggregated Local Flow Descriptor
- 如何实现下发手机短信验证码
- Week01_day05 方法 、数组的定义及使用
- iOS 规避苹果审查,实现app store上的app版本强制更新
- 消息系统 Kafka的神级操作,hadoop大神教你以下几招保准你会
- 大数据开发hadoop核心的分布式消息系统:Apache Kafka 你知道吗
- sql语句的共用
- 贵州的程序员年薪都40万不止,和你差在哪里?
- 你对于java大数据开源工具了解多少,有哪几种是最适合大数据开发
- 云计算发展进程中的六大关键技术