1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;

2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;

3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);

4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;

5、接收用户填写的验证码及其他数据;

6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;

7、验证码正确且在有效期内,请求通过,处理相应的业务。

一、首先添加一个jar包,工具类会用到。

commons-codec

commons-codec

1.11

我这里只是编写一个简单的短信验证功能,要是用其他的语音验证。。。。等等需要去秒滴云官方下载文档,下面是编写的一个config文档,专门存放一些参数。

img

二、编写http请求工具类

public class HttpUtil

{

/**

* 构造通用参数timestamp、sig和respDataType

*

* @return

*/

public static String createCommonParam()

{

// 时间戳

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

String timestamp = sdf.format(new Date());

// 签名

String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);

return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;

}

/**

* post请求

*

* @param url

* 功能和操作

* @param body

* 要post的数据

* @return

* @throws IOException

*/

public static String post(String url, String body)

{

System.out.println("url:" + System.lineSeparator() + url);

System.out.println("body:" + System.lineSeparator() + body);

String result = "";

try

{

OutputStreamWriter out = null;

BufferedReader in = null;

URL realUrl = new URL(url);

URLConnection conn = realUrl.openConnection();

// 设置连接参数

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setConnectTimeout(5000);

conn.setReadTimeout(20000);

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

// 提交数据

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

out.write(body);

out.flush();

// 读取返回数据

in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line = "";

boolean firstLine = true; // 读第一行不加换行符

while ((line = in.readLine()) != null)

{

if (firstLine)

{

firstLine = false;

} else

{

result += System.lineSeparator();

}

result += line;

}

} catch (Exception e)

{

e.printStackTrace();

}

return result;

}

/**

* 回调测试工具方法

*

* @param url

* @param reqStr

* @return

*/

public static String postHuiDiao(String url, String body)

{

String result = "";

try

{

OutputStreamWriter out = null;

BufferedReader in = null;

URL realUrl = new URL(url);

URLConnection conn = realUrl.openConnection();

// 设置连接参数

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setConnectTimeout(5000);

conn.setReadTimeout(20000);

// 提交数据

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

out.write(body);

out.flush();

// 读取返回数据

in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line = "";

boolean firstLine = true; // 读第一行不加换行符

while ((line = in.readLine()) != null)

{

if (firstLine)

{

firstLine = false;

} else

{

result += System.lineSeparator();

}

result += line;

}

} catch (Exception e)

{

e.printStackTrace();

}

return result;

}

}

三、生成四位数的方法

public static String runNumber() {

String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

StringBuilder sb=new StringBuilder(4);

for(int i=0;i<4;i++)

{

char ch=str.charAt(new Random().nextInt(str.length()));

sb.append(ch);

}

System.out.println(sb.toString());

String code = sb.toString();

return code;

}

四、执行方法execute(),便会发送成功

public class IndustrySMS

{

private static String operation = "/industrySMS/sendSMS";

private static String accountSid = Config.ACCOUNT_SID;

private static String to = "15342349382";

private static String smsContent = "【小陶科技】登录验证码:{"+runNumber().toString()+"},如非本人操作,请忽略此短信。";

/**

* 验证码通知短信

*/

public static void execute()

{

String tmpSmsContent = null;

try{

tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");

}catch(Exception e){

}

String url = Config.BASE_URL + operation;

String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent

+ HttpUtil.createCommonParam();

// 提交请求

String result = HttpUtil.post(url, body);

System.out.println("result:" + System.lineSeparator() + result);

}

作者: classabcd

本文链接:https://blog.csdn.net/classabcd/article/details/82464582

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 近期热文推荐:

觉得不错,别忘了随手点赞+转发哦!

java 短信换行_四步,搞定一个短信验证码登录!相关推荐

  1. RxJava的使用,教你四步搞定RxBus.

    教你四步搞定RxBus. 1,在你的工程中添加依赖   dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')testCompi ...

  2. xbox虚拟服务器,小白玩家看这里!国行Xbox One快速上手攻略 四步搞定

    小白玩家看这里!国行Xbox One快速上手攻略 四步搞定 2014-09-25 10:55:04来源:游戏下载编辑:评论(0) 还有4天时间国行Xbox One就将与大陆玩家见面了,想想还是有点小激 ...

  3. 四步搞定ansible-tower

    四步搞定ansible-tower 环境准备 centos7 + 2c/G (笔者测试) step1 下载ansible-tower最新版 wget https://releases.ansible. ...

  4. 四步搞定OPENVAS安装

    四步搞定OPENVAS安装 第一步: Configure Atomicorp Repository (as user root, only once) wget -q -O http://www.at ...

  5. dfema规则_六步搞定DFMEA表格

    原标题:六步搞定DFMEA表格 档即用www.downjy.com向您分享如下的"六步搞定DFMEA表格"的知识.原版文档下载方法参照文章底部说明~ 1‍DFMEA的重大作用 FM ...

  6. 四步搞定阿里云RDS云数据库恢复到本地mysql数据库

    第1步:下载提取工具和阿里云rds数据库备份文件 1.先去阿里云数据rds后台–>备份恢复–>下载你的数据备份 2.下载阿里云官方提供的rds_backup_extract.sh数据备份文 ...

  7. mfc通过ado链接oracle,VS2013环境下MFC通过ADO连接Oracle数据库 四步搞定

    这两天需要做有关MFC连接Oracle的项目,上网搜了老半天,东拼西凑,终于搞通了MFC下ADO方式连接Oracle的程序. 下面就按我新建的项目来进行一下说明(项目名称:adooracle) 第一步 ...

  8. 四步搞定小菊花 Loading 动画

    做动画最要的是思路,做多了,动画其实非常简单,我们今天来实现一个小菊花加载动画: 做动画的关键一步是「拆分」,这张图中包含了 12 根「小柱子」,每根小柱子的透明度不一样,让这 12 根「小柱子」旋转 ...

  9. SAP GUI 自动登录教程,简单四步搞定

    第一步:更改注册表 在表中添加Security->EnablePassword 值设置为1 第二步:生成快捷方式 登录SAP GUI 点击注销旁边的按钮按提示生产快捷 生成后如图 第三步:生成加 ...

最新文章

  1. 后台开发经典书籍--深入理解计算机系统
  2. 这就是多媒体开发 视频竟然比连续图片更省带宽
  3. [设计模式-行为型]状态模式(State)
  4. 零基础带你学习MySQL—Select语句以及注意事项(十)
  5. php js获取session,原创:PHP与纯JS交互在当前页面读取SESSION不用AJAX等
  6. SQL创建触发器以及触发器的使用实例+详解
  7. 电赛提升----风力摆控制系统
  8. 不限速的免费下载神器,牛逼!
  9. js之this,call,apply用法
  10. 【C++错误处理】no matching function for call to transform
  11. 数据结构---列表[pf]
  12. Halcon DrawRegion()后会阻塞直到右键按下,请问如何主动取消绘制区域
  13. 沉睡者IT - 短视频简单无脑玩法,播放量10w+的藏头诗玩法,操作思路分享给你!
  14. excel怎么调用c语言程序设计,知识:Excel使用C语言进行读写,代码简单易懂
  15. nand falsh 111
  16. 防抱死制动系统(ABS)-Simulink仿真
  17. php 自带加密、解密函数
  18. 完美世界2017C++游戏开发笔试编程题
  19. Swift中string转换float/double的若干方法
  20. 配置子网IP:设置网卡高级IP地址,实现同时访问内网和互联网

热门文章

  1. USDT对接专用PHP开发包
  2. 2017武汉国际绿色建筑建材博览会 (武汉建博会)会刊(参展商名录)
  3. 什么是log文件、jar文件、phar文件、Composer、包管理工具?
  4. Vue+Element-ui实现emoji表情在光标处添加
  5. 2021-07-08使用python生成图表
  6. 高新企业研发活动中的四个常见问题
  7. 字节四面-暑期实习后端开发
  8. 【实体识别】深入浅出讲解命名实体识别(介绍、常用算法)
  9. alpha版postmortem 报告
  10. 新唐NUC980配置ntp功能