1. 进入秒嘀科技(http://www.miaodiyun.com/),注册一个账号

2. 注册好之后,点击 用户中心 -> 账户管理,就会进入如下界面 (顺便提一下,新注册的用户,平台会免费赠送你10元,足够大家学习和使用了,所以不用担心需要充钱)  你需要做的就是获取你自己的 ACCOUNT SID 和 AUTH TOKEN

3. 点击 用户中心 -> 认证,进行企业认证,企业的资质证件就是企业的营业执照,网上百度一张带有红色的公章就行,公司电话填写自己的就行,最后点击提交

4. 需要在秒嘀上新建一个发送手机验证码的模板,点击 配置管理 -> 验证码短信模板,就会进入如下界面

5. 点击“新建模板”按钮, 填写好模板名称、短信签名 和 短信内容(短信内容可以选择 验证码通知短信模板 或者 自己编写短信内容),点击“提交审核”按钮即可,界面如下

6. 然后等待 短信验证码模板 审核通过即可,点击 配置管理 -> 验证码短信模板,查看 短信验证码 是否审核通过

7. 接下来就是代码了,把我圈住的地方改成自己的就行,其他的不用动,tamp值 一定要与自己创建短信模板的短信内容保持一致

8. java短信发送验证码

导入阿里巴巴fastjson.jar包:

方式一:下载fastjson.jar包导入工程就行      链接:https://pan.baidu.com/s/1RH4-x82G8-sNmn7y5YhdjA

方式二:maven工程直接把     下面这段代码复制到  pom.xml 中就行

 <dependency>                                                                               <groupId>com.alibaba</groupId>                                                        <artifactId>fastjson</artifactId><version>1.2.47</version></dependency>   

  源码如下 :     

package com.group.util;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;import com.alibaba.fastjson.JSONObject;/*** * @Title:GetMessageCode* @Description:发送验证码* @author:ヅ零碎de記憶ぷ* @Date 2018年7月4日 下午9:27:04*/
public class GetMessageCode {private static final String QUERY_PATH = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";private static final String ACCOUNT_SID = "";private static final String AUTH_TOKEN = "";// 根据相应的手机号发送验证码public static String getCode(String phone) {String rod = smsCode();String timestamp = getTimestamp();String sig = getMD5(ACCOUNT_SID, AUTH_TOKEN, timestamp);String tamp = "【联途旅游】尊敬的用户,您好,您的验证码为:" + rod + ",若非本人操作,请忽略此短信。";OutputStreamWriter out = null;BufferedReader br = null;StringBuilder result = new StringBuilder();try {URL url = new URL(QUERY_PATH);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setDoInput(true);// 设置是否允许数据写入connection.setDoOutput(true);// 设置是否允许参数数据输出connection.setConnectTimeout(5000);// 设置链接响应时间connection.setReadTimeout(10000);// 设置参数读取时间connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");// 提交请求out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");String args = getQueryArgs(ACCOUNT_SID, tamp, phone, timestamp, sig, "JSON");out.write(args);out.flush();// 读取返回参数br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String temp = "";while ((temp = br.readLine()) != null) {result.append(temp);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}JSONObject json = JSONObject.parseObject(result.toString());String respCode = json.getString("respCode");String defaultRespCode = "00000";if (defaultRespCode.equals(respCode)) {return rod;} else {return defaultRespCode;}}// 定义一个请求参数拼接方法public static String getQueryArgs(String accountSid, String smsContent, String to, String timestamp, String sig,String respDataType) {return "accountSid=" + accountSid + "&smsContent=" + smsContent + "&to=" + to + "&"+"timestamp=" + timestamp+ "&sig=" + sig + "&respDataType=" + respDataType;}// 获取时间戳public static String getTimestamp() {return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());}// sing签名public static String getMD5(String sid, String token, String timestamp) {StringBuilder result = new StringBuilder();String source = sid + token + timestamp;// 获取某个类的实例try {MessageDigest digest = MessageDigest.getInstance("MD5");// 要进行加密的东西byte[] bytes = digest.digest(source.getBytes());for (byte b : bytes) {String hex = Integer.toHexString(b & 0xff);if (hex.length() == 1) {result.append("0" + hex);} else {result.append(hex);}}} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result.toString();}// 创建验证码public static String smsCode() {String random = (int) ((Math.random() * 9 + 1) * 100000) + "";return random;}
}

9. 测试发送手机短信验证码 源码如下   (手机号码换成你想要发送到指定手机的手机号码即可)

package com.message.test;public class Test {public static void main(String[] args) {String phone = "12345678910";GetMessageCode.getCode(phone);}}

10. 常见的问题

(1)返回错误码 00104 “相同的应用当天给同一手机号发送短信的条数小于等于n” 如何处理?

答:此错误是同一手机号短信发送请求频率限制,请求失败也算次;
               验证码短信下发次数限制为:1分钟2次、1小时4次、24小时内10次;
               通知类短信下发次数限制为:24小时内20次;
               营销类短信下发次数限制为:24小时内20次。
               验证码短信24小时下发10次,不能修改
               通知类短信有需要可调整下发次数
               该类配置的修改需要在后台中修改设置,客户端不能设置
               如果在测试时候遇到请求限制,可联系客服添加白名单

(2)返回错误码 00134 "没有和内容匹配的模板” 如何处理?

答:请检查是否在官网建立模板,smscontent=【短信签名】+内容,发送内容要与模板匹配。

(3)返回错误码 0005 "timestamp已过期” 如何处理?

答:把获取时间戳 getTimestamp()方法中的 return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());换成return System.currentTimeMillis()+""; 即可。

java实现发送手机验证码功能相关推荐

  1. thinkphp实现发送手机验证码功能!

    php实现发送手机验证码功能如下: //发送手机验证码public function sendPhoneCodeMessage(){ vendor('SendPhoneCode.SendCode',' ...

  2. Java实现发送手机验证码

    向手机发送验证码在用户注册等等业务中会用到,下面我来介绍如何用Java实现向手机发送验证码. 笔者此处使用的是阿里云的短信服务,首先需要登录阿里云官方网站,找到并开通短信服务,然后需要申请短信签名和模 ...

  3. Java实现发送手机验证码,发送短信

    要发送短信,我们需要第三方提供的短信接口,这里我使用阿里云的短信服务. 首先进入阿里云的官网,然后注册.登陆之后选择云通信-->短信服务 然后点击免费开通. 开通后进入控制中心,选择右上方的支持 ...

  4. java 实现发送手机验证码的功能 (超详细)

    我这里使用的旦米(http://www.danmi.com/)你们用阿里的就去看看其他博客 1.首先注册一个旦米的账号,第一次注册会免费的送你10元.足够你去测试用,不用担心自己去充钱. 2.注册好了 ...

  5. 阿里云 java SpringBoot发送手机验证码

    准备工作:需要在阿里云注册,并且申请AK.自行百度 然后: 首先新建springboot文件,在此不做赘述 向pom.xml文件中添加依赖: <!--短信sdk--> <depend ...

  6. Java技术类校招面试题汇总:用java实现发送手机验证码

    分布式系统特性与衡量标准 透明性:使用分布式系统的用户并不关心系统是怎么实现的,也不关心读到的数据来自哪个节点,对用户而言,分布式系统的最高境界是用户根本感知不到这是一个分布式系统 可扩展性:分布式系 ...

  7. SpringBoot+vue 使用阿里云的短信功能发送手机验证码

    前言: 小编后端用的是Springboot 前端用的是vue ,小编主要是写后台,前端页面比较简陋,后期还要调优,写的不对处还望多多包涵. 环境: 需要先准备好阿里云的账号和一些必要的参数.详情见我的 ...

  8. python按照号段生成手机号接收验证码_django 发送手机验证码的示例代码

    一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...

  9. Spring boot 发送手机验证码

    由于阿里云现在的短信签名无法通过申请,所以我这里选择了中国网建SMS短信平台(手机号注册即用,有免费赠送的几条短信测试) demo代码地址:https://github.com/mer97/sprin ...

最新文章

  1. android 怎么加链接地址,Android TextView添加超链接的方法示例
  2. C/C++ 代码转换规范化的脚本
  3. 使用LitJson进行序列化和反序列化
  4. 单例设计模式详解+源代码+JDK源码应用——Java设计模式系列学习笔记
  5. CentOS 7添加开机启动服务脚本
  6. 零基础:邪恶带你3步快速掌握iSCSI搭建
  7. 微信小程序demo2
  8. Netty学习总结(6)——Netty使用注意事项
  9. [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  10. PHP ASCII 排序方法
  11. 【趋势分析】EXPMA四色均线指标优化版主图 通达信 东财等通用
  12. kali linux mysql密码,Kali Linux中MySQL重置root密码
  13. python numpy官网_如果通过官网下载Python-Numpy的文档
  14. 学术蓝答辩PPT模板
  15. 用什么c语言语句直接跳出if,C语言中怎样跳出if语句
  16. js获取数组第一个和最后一个元素
  17. 魔戒显示网络错误 或者服务器停机,指环王安装和运行过程中的常见问题及解决办法(汇总)...
  18. Eclipse添加代码自动补全+对齐功能
  19. 渥太华大学计算机专业,渥太华大学计算机专业解析
  20. HTML5作品展示摄影网站网页模板源码下载

热门文章

  1. 硬件工程师的你也不想一辈子画图、调板子吧!!!
  2. LiveQing流媒体RTMP推流服务-如何获直播流地址 HLS/HTTP-FLV/WS-FLV/WebRTC/RTMP视频流地址
  3. lw计算机组成,计算机组成习题答案(清华大学出版社)
  4. Android: Switch更改颜色
  5. 别让你20多岁的活法,毁掉你30岁后的人生
  6. 长短信实现系列之电信SMGP3.0
  7. 2019 ICPC 南京 F题 Paper Grading
  8. 新能源行业商业采购协同系统:赋能新能源行业采购业务,提升产业协同
  9. java毕业设计_企业销售合同管理系统
  10. 计量广义差分操作过程_计量学堂 | 计量经济学最基本的31个问题